4

角かっこを使用すると、予約済みの名前や以前は許可されていなかった文字 (スペースなど) を識別子に使用できることを理解しています。それらをどこにでも追加することは良い習慣だと思いました。( SQL ステートメントでの角括弧 [] の使用は何ですか? を参照してください。 )

ただし、COL_LENGTH 関数でそれらを使用すると、予期しない結果が得られることに気付きました。

SELECT COL_LENGTH(N'[TestTable]', N'[RatingID]')    -- Returns NULL
SELECT COL_LENGTH(N'TestTable', N'[RatingID]')      -- Returns NULL
SELECT COL_LENGTH(N'[TestTable]', N'RatingID')      -- Returns 10
SELECT COL_LENGTH(N'TestTable', N'RatingID')        -- Returns 10

一重引用符で列名を定義すると、角括弧が冗長になることがわかりますが、なぜ呼び出しが中断されるのかわかりません。角括弧がテーブル引数で機能することは、私の混乱を増します。

角括弧を使用してはいけない場合のルールはありますか?

4

1 に答える 1

2

実際の SQL ステートメントでのみ使用される文字列を受け取る関数に角括弧を渡さないでください。関数は、角かっこを含む名前のテーブルを探しています。

于 2013-08-12T15:25:49.813 に答える