我需要更改 nvarchar 变量的排序规则。 通过文档:

(...)3。可以在多个级别指定整理子句。这些包括以下内容:

施放表达的整理。您可以使用Comalate子句将字符表达式应用于特定的整理。字符文字和变量被分配了当前数据库的默认整理。列引用分配了列的定义整理。对于表达式的整理,请参阅 排序规则优先级(事务 SQL)。

但是,我无法找出使用 CAST()、CONVERT() 或使用 DECLARE 进行变量声明的正确语法。

有帮助吗?

解决方案

SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS

其他提示

CAST CONVERT 是多余的!

SELECT N'abc' COLLATE French_CS_AS

这是多余的,因为只更改排序规则不会更改数据类型 NVARCHAR

如果要在2到1个字节之间进行更改,或者在ver-sa-sa字符编码之间进行更改,则需要进行CAST或转换。在这些情况下,这不是多余的。

当源列是2字节字符序列(nchar,nvarchar)并且选择投影需要是单字节字符(char,varchar)时,应指定强制转换和转换。在类型系统之间的转换之前应用归类转换。

SELECT CAST(N'ФBC' COLLATE SQL_Latin1_General_CP1_CI_AS as varchar(10)) AS ProjectedSingleByte

如果您想比较或连接不同排序规则的两列,这可能会有所帮助。就我而言,我必须比较两列,其中一列使用“SQL_Latin1_General_CP1_CI_AS”,另一列使用“Latin1_General_CP1_CI_AS”。

我只是在加入这两个选项时使用了这个选项。

在A.Person = B.NAME上整理database_default

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top