Sql server 为扩展多语言应用程序的基本collate语句的SELECT查询指定排序规则

Sql server 为扩展多语言应用程序的基本collate语句的SELECT查询指定排序规则,sql-server,tsql,collate,Sql Server,Tsql,Collate,我需要一个多语言应用程序,其中搜索中显示的列是从配置中提取的,数据可以根据配置进行排序 问题1-我使用的选择查询如下: SELECT * FROM TABLE ORDER BY 1 COLLATE SQL_Latin1_General_CP1_CI_AS DESC, ORDER BY 4 COLLATE SQL_Latin1_General_CP1_CI_AS DESC 我得到以下错误: 表达式类型int对于COLLATE子句无效 是否可以在不指定列名的情况下,通过使用列索引(我们编写普通

我需要一个多语言应用程序,其中搜索中显示的列是从配置中提取的,数据可以根据配置进行排序

问题1-我使用的选择查询如下:

SELECT * 
FROM TABLE 
ORDER BY 1 COLLATE SQL_Latin1_General_CP1_CI_AS DESC,
ORDER BY 4 COLLATE SQL_Latin1_General_CP1_CI_AS DESC
我得到以下错误:

表达式类型int对于COLLATE子句无效

是否可以在不指定列名的情况下,通过使用列索引(我们编写普通SQL查询的方式)来实现这一点

问题2-我还需要支持基于整数列的排序,如“ID”

但我得到的错误与问题1中提到的相同。是否有任何解决方法允许这样做?或者,即使是最新版本的SQL Server 2016,这是否也是我们必须面对的SQL Server限制


非常感谢您的回复/帮助。

在SQL查询中使用列索引值不是最佳做法 即使它在许多语法中也不起作用

因此,最好在查询中使用列名

对于COLLATE语句,可以将其用于字符数据类型字段值。
对于数字数据类型,不能使用COLLATE。

在SQL查询中使用列索引值不是最佳做法 即使它在许多语法中也不起作用

因此,最好在查询中使用列名

对于COLLATE语句,可以将其用于字符数据类型字段值。 对于数字数据类型,不能使用COLLATE