我需要改变一个nvarchar变量的排序规则。 通过文档 :
(......)3. COLLATE子句可以在几个级别来指定。 这些措施包括以下内容:
铸造表达式的排序规则。 您可以使用COLLATE子句的字符表达式适用于某一特定排序规则。 字符文字和变量分配当前数据库的默认排序规则。 列引用分配列的定义排序规则。 对于表达式的核对,看排序规则优先级 (处理SQL)。
但是我想不通的CAST的使用正确的语法(),()转换或变量声明与申报这一目的。
我需要改变一个nvarchar变量的排序规则。 通过文档 :
(......)3. COLLATE子句可以在几个级别来指定。 这些措施包括以下内容:
铸造表达式的排序规则。 您可以使用COLLATE子句的字符表达式适用于某一特定排序规则。 字符文字和变量分配当前数据库的默认排序规则。 列引用分配列的定义排序规则。 对于表达式的核对,看排序规则优先级 (处理SQL)。
但是我想不通的CAST的使用正确的语法(),()转换或变量声明与申报这一目的。
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS
CAST
或CONVERT
是多余的!
SELECT N'abc' COLLATE French_CS_AS
因为只是改变了排序规则不会更改数据类型,它是多余的NVARCHAR
。
如果你是2和1个字节,或副VER-SA之间的变化,字符编码,然后浇铸或转换是必要的。 这不是在这些情况下多余的。
当源列是一个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