2012-03-09 9 views
0

は、名前が予約済みのSQLキーワードである

id name desc 
------------------------- 
1  kkt kkt description 
1  skt skt description 

「sample_table」以下の表を考えてみましょうそこにある列を選択するとにかく、私はその名前descを使用せずに、3番目の列を選択することができますか? select desc from mytableをしようと

はエラー

をスロー示唆してください。

おかげで、

バラン

+2

** NO **あなたは数値インデックスによって、SQL Serverの列にアクセスすることはできません....あなたはいけない、どちらか - リレーショナルテーブル内の列の順序**されます意味のない**とそれに依存するコードを書くべきではありません –

+5

動的SQLがなければ、本当に悪い考えになるでしょう。誰かがテーブルの列の順序を変更するとどうなりますか。 – Jamiec

+0

Ok ..私はこのメソッドを使用しません..言及ありがとう.. – balanv

答えて

7

私はこれがなぜ必要なのか分からず、は決して自分で使います。

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 

使用[]言葉に予約されている列名の周り。

+0

私のクライアントのデータベースでは、彼らは説明のための "desc"と呼ばれるフィールドを使用しているが、私は 'エラーをスローします。なぜインデックスを介してカラムにアクセスしようとしているのですか? – balanv

+6

@balanv - 予約語であるカラム名の前後に '[]'を使用してください。更新された答え。 –

0

は、このヘルプを行います。

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

0

からは、足で自分自身を撮影する行くことができるだけので、ここであなたがそれを行うことができる方法です動的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 
3

予約語である列名の周りに標準のSQL引用符付き識別子を使用します。

SELECT "desc" FROM sample_table; 
+0

'\' desc \ ''は動作しますが、 '' desc "'は私のためには機能しませんでした。あなたはあなたの答えに追加することができます。 –

+0

@VikasGautam:あなたはそれを標準SQLではありません。 MySQL? – onedaywhen

0

mytable.descからmytableを選択してください。私にとって

作業罰金は

関連する問題