考慮如下表「sample_table」選擇它的名稱是保留SQL關鍵字
id name desc
-------------------------
1 kkt kkt description
1 skt skt description
反正是有不使用它的名字desc
我可以選擇第三列的列?
試圖select desc from mytable
拋出一個錯誤
請建議。
感謝,
巴蘭
考慮如下表「sample_table」選擇它的名稱是保留SQL關鍵字
id name desc
-------------------------
1 kkt kkt description
1 skt skt description
反正是有不使用它的名字desc
我可以選擇第三列的列?
試圖select desc from mytable
拋出一個錯誤
請建議。
感謝,
巴蘭
我不明白你爲什麼需要這個,我會從來沒有自己使用它。
declare @T table
(
id int,
name varchar(10),
description varchar(25)
)
insert into @T values
(1, 'kkt', 'kkt description'),
(1, 'skt', 'skt description')
select T2.N.value('*[3]', 'varchar(max)')
from (select *
from @T
for xml path('r'), type) as T1(X)
cross apply T1.X.nodes('/r') as T2(N)
更新
你應該做這樣的吧。
select [desc]
from YourTable
使用[]
圍繞與保留字列名。
因爲在我的客戶端數據庫中他們使用了一個名爲「desc」的字段來描述..但是當我使用'select desc from mytable'時拋出一個錯誤..那就是爲什麼我試圖通過索引訪問列.. – balanv 2012-03-09 11:51:25
@balanv - 你應該使用'[]'列名是保留字。更新了答案。 – 2012-03-09 11:53:20
這是否幫助:
Declare @WhichOne int;
Declare @Sql varchar(200);
SET @WhichOne = 2;
WITH cte AS
(SELECT name, Row_Number() Over (ORDER BY column_id) AS rn
FROM sys.COLUMNS
WHERE Object_Name(object_id) = 'MyTable')
SELECT @Sql = 'Select ' + QuoteName(name) + ' From MyTable'
FROM cte
WHERE rn = @WhichOne;
Exec(@Sql);
從http://www.daniweb.com/web-development/databases/ms-sql/threads/341388
只要你可以去搬起石頭砸自己的腳,這裏是你如何能有做到這一點動態sql:
DECLARE @sql NVARCHAR(MAX)
select
@sql = 'SELECT ' + COLUMN_NAME + ' FROM YourTable'
from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='YourTable'
AND ORDINAL_POSITION=3
exec sp_executeSQL @sql
在保留字的列名周圍使用標準的SQL引用標識符,例如
SELECT "desc" FROM sample_table;
'\'desc''工作,但''desc''不適合我。你可以補充你的答案。 – 2017-02-22 21:30:52
@VikasGautam:你不是標準SQL。 MySQL的? – onedaywhen 2017-04-01 13:57:48
從mytable中選擇mytable.desc;
做工精細,我
**電話**,你不能用數字索引訪問SQL Server列....你不應該,或者 - 列的關係表的順序是**毫無意義的**,你不應該寫任何依賴於該代碼的代碼 – 2012-03-09 11:43:07
不是沒有動態SQL,如果你能這樣做,它會是一個非常糟糕的主意。當某人更改表格中列的順序時會發生什麼。 – Jamiec 2012-03-09 11:44:12
好的..我不會使用這種方法..謝謝提及.. – balanv 2012-03-09 11:45:12