为扩展多语言应用程序的基本整理语句的 SELECT 查询指定排序整理

Specify sort collation for a SELECT query extending the basic collate statement for a multilingual app

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

问题 1 - 我正在使用这样的 Select 查询:

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

我收到以下错误:

Expression type int is invalid for COLLATE clause.

是否可以在不指定列名的情况下仅使用我们编写普通 SQL 查询的方式使用列索引来完成这项工作?

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

但是我遇到了与问题 1 中提到的相同的错误。是否有任何变通方法可以解决这个问题?还是即使使用最新版本的 SQL Server 2016,我们也必须忍受 SQL 服务器限制?

将不胜感激 response/help。

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

所以最好在查询中使用列名

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