[英]Filtering unicode column in Sql server 2005 - to much data match
我有一個簡單的表:
CREATE TABLE [dbo].[Users]([Surname] [nvarchar](50) COLLATE Latin1_General_CI_AI NULL) ON [PRIMARY]
有兩行:
Paweł
Pawel
發出以下select語句:
SELECT *, CAST(Surname AS VARBINARY(30)) AS Expr1, CAST(N'Paweł' AS VARBINARY(30)) AS Expr1
FROM Users WHERE Surname = N'Paweł'
給出以下結果:
Paweł 0x50006100770065004201 0x50006100770065004201
Pawel 0x50006100770065006C00 0x50006100770065004201
返回值為'Pawel'的行,即使它不等於'Paweł'(二進制列顯示它)。
知道發生了什么,在這種情況下,SQL服務器如何考慮Pawel =Paweł?
謝謝,Paweł
您的排序Latin1_General_CI_AI
對重音不敏感: Latin1_General_CI_AI
嘗試這樣的事情:
select 1 where N'Pawel' = N'Paweł' collate Latin1_General_100_CI_AS
按預期返回任何內容。
整理中的“AI”代表“Accent Insensitive”。 要區分這兩者,您需要使用“AS”代替“Accent Sensitive”: Latin1_General_CI_AS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.