MSDN
は次のとおりです。 ある意味で non-integer constant
である文字定数について言わなければなりません
1) 非整数定数は ... 整数ではない定数です。
例:'string1'
文字列定数を表します
0x01
varbinary 定数を表します
{ts '2015-02-26 06:00:00'}
日時定数を表します
1.23
数値定数を表します
2) したがって、文字列定数 / 文字列定数を定義するためにシングル クォーテーションが使用されます しかし SQL Server では、単一引用符を列識別子の区切り記号として使用することもできます:
SELECT ... expression AS 'Column1'
FROM ...
このコンテキストでは、'Column1'
は明らかです。 は列識別子ですしかし ORDER BY で使用する場合:ORDER BY 'Column1'
SQL Server はそれが文字列リテラル (文字列定数) を表しているのか、それとも列識別子/列名を表しているのかを認識できないため、混乱が生じます。
3) SQL Server では ORDER BY で整数定数を使用できるため、SELECT ColA, ColB, ColC FROM ... ORDER BY 2
.この場合 2
列 ColB
のインデックスです .また、ColB
でソートしたい場合は および ColC
ORDER BY 2, 3
を使用できます .列のインデックスの使用は悪い習慣と見なされます。
4) この場合、私は
を使用しますORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME