我发现在我们的产品DB为亚洲市场奇怪的行为。如果条件不像人们所期望的那样在中文信件中起作用。
create table #Temp (TextContent nvarchar(20), ChineseType varchar(10))
insert #Temp values (N'㱔', '??') --odd
insert #Temp values (N'', '??') --odd
insert #Temp values (N'龪', '??') --odd
insert #Temp values (N'㕦', 'prc') --odd
insert #Temp values (N'谷', 'prc')
insert #Temp values (N'丑', 'prc')
insert #Temp values (N'苹', 'prc')
insert #Temp values (N'松', 'prc')
insert #Temp values (N'穀', 'taiwan')
insert #Temp values (N'醜', 'taiwan')
insert #Temp values (N'蘋', 'taiwan')
insert #Temp values (N'鬆', 'taiwan')
insert #Temp values (N'隻', 'taiwan')
select * from #Temp where TextContent like ''
select * from #Temp where TextContent like N''
select * from #Temp where TextContent like N'㕦'
-- all will return
-- |TextContent | ChineseType |
-- | 㱔 | ?? |
-- | | ?? |
-- | 龪 | ?? |
-- | 㕦 | prc |首先,我发现默认的排序规则是SQL_Latin1_General_CP1_CI_AS,因此我谷歌了一些关于汉字字母表、排序、校对的理论,然后我尝试了Chinese_PRC_CI_AS、Chinese_PRC_CI_AI、Chinese_PRC_CI_AS_KS_WS、Chinese_PRC_CS_AS_KS_WS,但没有成功。结果总是一样的。
select * from #Temp where TextContent like N'㕦' COLLATE Chinese_PRC_CI_AS
select * from #Temp where TextContent like N'㕦' COLLATE Chinese_PRC_CI_AI
-- all will return
-- |TextContent | ChineseType |
-- | 㱔 | ?? |
-- | | ?? |
-- | 龪 | ?? |
-- | 㕦 | prc |唯一的“按预期工作”是二进制排序。Chinese_PRC_BIN,Chinese_PRC_BIN2,Latin1_General_BIN。
谢谢
发布于 2017-02-16 12:21:29
https://stackoverflow.com/questions/42253272
复制相似问题