San*_*azi 28 sql t-sql collation string-comparison sql-server-2008
我需要更改nvarchar变量的排序规则.通过文件:
(...)3.可以在多个级别指定COLLATE子句.这些包括以下内容:
转换表达式的排序规则.您可以使用COLLATE子句将字符表达式应用于某个排序规则.为字符文字和变量分配当前数据库的默认排序规则.为列引用分配列的定义排序规则.有关表达式的排序规则,请参阅排序规则优先顺序 (Transact-SQL).
但是,为了这个目的,我无法弄清楚使用CAST(),CONVERT()或使用DECLARE的变量声明的正确语法.
Luk*_*sik 35
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS
nal*_*ply 17
CAST或者CONVERT是多余的!
SELECT N'abc' COLLATE French_CS_AS
这是多余的,因为只更改排序规则不会更改数据类型NVARCHAR.
小智 5
如果您在 2 和 1 个字节之间更改字符编码,反之亦然,则需要 CAST 或 Convert。在这些情况下,这并不是多余的。
当源列是 2 字节字符序列(nchar、nvarchar)并且选择投影要求是单字节字符(char、varchar)时,您应该指定强制转换和转换。在类型系统之间进行转换之前应用排序规则转换。
SELECT CAST(N'?BC' COLLATE SQL_Latin1_General_CP1_CI_AS as varchar(10)) AS ProjectedSingleByte