Voici ce que le MSDN
ont à dire sur les constantes de caractères qui sont en quelque sorte la non-integer constant
1) Les constantes non entières sont ... des constantes qui ne sont pas des nombres entiers.
Exemple :'string1'
représente une chaîne constante
0x01
représente une constante varbinaire
{ts '2015-02-26 06:00:00'}
représente une constante date/heure
1.23
représente une constante numérique
2) Ainsi, les guillemets simples sont utilisés pour définir une constante de chaîne / constante de chaîne de caractères mais SQL Server permet également d'utiliser des guillemets simples comme délimiteur d'identifiant de colonne :
SELECT ... expression AS 'Column1'
FROM ...
Dans ce contexte, il est clair que 'Column1'
est un identifiant de colonne mais lorsqu'il est utilisé dans ORDER BY :ORDER BY 'Column1'
cela génère de la confusion car SQL Server ne sait pas s'il représente un littéral de chaîne (constante de chaîne de caractères) ou s'il représente un identifiant de colonne / un nom de colonne.
3) SQL Server permet d'utiliser des constantes entières dans ORDER BY donc SELECT ColA, ColB, ColC FROM ... ORDER BY 2
. Dans ce cas 2
est l'index de la colonne ColB
. Aussi, si vous voulez trier par ColB
et ColC
vous pouvez utiliser ORDER BY 2, 3
. L'utilisation de l'index de colonne est considérée comme une mauvaise pratique.
4) Dans ce cas, j'utiliserais
ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME