为扩展多语言应用程序的基本整理语句的 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。
我有一个多语言应用程序的要求,其中显示在搜索中的列是从配置中提取的,并且可以根据配置对数据进行排序。
问题 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。