Sql server 2008 sql server 2008-ORDER BY子句中的非整数常量

Sql server 2008 sql server 2008-ORDER BY子句中的非整数常量,sql-server-2008,sql-order-by,constants,upgrade,Sql Server 2008,Sql Order By,Constants,Upgrade,升级顾问说 90或中的ORDER BY子句中不允许使用非整数常量 以后的兼容模式 但是,当我在SQLServer2008中尝试下面的语句时,它工作得很好。所以,我的问题是-什么是非整数常数 select POS_NO ,EMP_NO ,ORG_NAME ,EMP_LAST_NAME + ', ' + EMP_FIRST_NAME AS "Name" FROM dbo.MyEmpTable ORDER BY "Name" 以下是MSDN对字

升级顾问说

90或中的ORDER BY子句中不允许使用非整数常量 以后的兼容模式

但是,当我在SQLServer2008中尝试下面的语句时,它工作得很好。所以,我的问题是-什么是非整数常数

select 
    POS_NO
    ,EMP_NO
    ,ORG_NAME
    ,EMP_LAST_NAME + ', ' + EMP_FIRST_NAME AS "Name" 
FROM 
    dbo.MyEmpTable 
ORDER BY
    "Name"
以下是MSDN对字符常量的看法,字符常量在某种意义上是非整数常量

字符串常量用单引号和 包括字母数字字符a-z、a-z、0-9和特殊字符 字符,例如感叹号!,在符号@和数字处 签名字符串常量被指定为默认值 当前数据库的排序规则,除非使用COLLATE子句 指定排序规则。对用户键入的字符串进行求值 通过计算机的代码页并翻译成 数据库默认代码页(如果需要)

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允许按顺序使用整数常量,从而从中选择ColA、ColB、ColC。。。2点之前下单。在本例中,2是ColB列的索引。另外,如果你想按ColB和ColC排序,你可以使用orderby2,3。使用列的索引被认为是不好的做法

4在这种情况下,我会使用

ORDER BY EMP_LAST_NAME + ', ' + EMP_FIRST_NAME

它应该只是按名称排序-没有双引号。ORDER BY子句需要引用SELECT中的列,即使该列由不同的位组成。我的问题是,如果MS说不允许非整数列…,这是否意味着它将抛出编译错误或查询执行失败?