越南语校对中的“tR”似乎有一些特别之处。知道的人能不能用简单的语言解释一下,不胜感激。此问题是在“越南语”整理的 SQL Server 上安装我们的产品期间发现的。模式中的一个表的名称中包含“tR”,但存储过程正在以所有小写的“tr”引用该表。而这个参考失败了。
我想这种情况类似于“?” 匹配其他排序规则中的“ss”。
这是一个复制品:
select case when 'tr' = 'tR' COLLATE SQL_Latin1_General_CP1_CI_AS then 'match' else 'no match' end
select case when 'tr' = 'tR' COLLATE Vietnamese_CI_AI then 'match' else 'no match' end
select case when 'tr' = 'TR' COLLATE Vietnamese_CI_AI then 'match' else 'no match' end
Run Code Online (Sandbox Code Playgroud)
结果:
-----
match
--------
no match
-----
match
Run Code Online (Sandbox Code Playgroud)
第二个 T-SQL 产生不匹配。't' 和 'R' 的其他组合则不然。
我的理解是,比较 Unicode 字符串文字的排序规则是由数据库排序规则决定的。
\n我的数据库正在使用SQL_Latin1_General_CP1_CI_AS
排序规则。
当我将 N\'\xc3\x9f\' 与 \'ss\' 进行比较时,我预计比较会失败。但事实并非如此。我正在尝试找出原因。这是复制品:
\n set nocount on \n go\n use tempdb\n go\n \n SELECT \n @@version as SqlServerVersion,\n CONVERT(nvarchar(128), SERVERPROPERTY(\'collation\')) as SqlServerCollation,\n DB_NAME() AS DatabaseName\n ,DATABASEPROPERTYEX(DB_NAME(), \'Collation\') AS CollationUsedBySQLServerDatabase\n GO\n declare @ss varchar(255) = \'ss\'\n declare @Nscharfess nvarchar(255) = N\'\xc3\x9f\'\n declare @scharfess varchar(255) = \'\xc3\x9f\'\n \n select case when @Nscharfess = @ss then \'Unicode : Strings match\' else \'Unicode : Strings do not match\' end,\n case when @scharfess = @ss …
Run Code Online (Sandbox Code Playgroud)