尝试从 SQL Server 2012 迁移到 2016 时出现 ORDER By 问题



我正在尝试从SQL Server 2012迁移到2016,并为此运行了Microsoft数据库迁移助手。在迁移助手中,我只是想涵盖重大更改。中断性更改之一如下所示。

select 
Name1 as 'Name',
Age1 as 'Age' from Table 
order by 'Name'

以下解释即将到来。

当数据库兼容模式设置为 80 或更早版本时,ORDER BY 子句中允许(并忽略)常量表达式。但是,当数据库兼容模式设置为 90 或更高版本时,ORDER BY 子句中的这些表达式将导致语句失败。

以下是此类有问题的语句的示例:

SELECT * FROM Production.Product
ORDER BY CASE WHEN  1=2 THEN 3 ELSE 2 END

但是,在 SQL Server 2016 中创建相同的架构并运行相同的代码后,该语句似乎工作正常。我错过了什么吗?

试试这个

select 
Name1 as Name,
Age1 as Age from Table 
order by Name
我认为,

如果迁移助手看到按子句排序的提示,它不会评估表达式,而只是发出警告。我知道很混乱,但@Esperento57的方法是唯一的方法。

最新更新