SQL中的特殊字符问题

时间:2015-05-08 09:08:19

标签: sql character-encoding

我有一张表格如下

Create Table Test(Name NVARCHAR(100))

Insert Into Test(Name) values (N'ἀἁἃἄὠἀἁἃἄὠἀἁἃἄὠἀἁἃἄὠἀἁἃἄὠἀἁἃἄὠἀἁἃἄὠ1,')
Insert Into Test(Name) values (N'ἀἁἃἄὠἀἁἃἄ')
Insert Into Test(Name) values (N'Test')

Select * from ED.Test WHERE Name like N'ἀἁἃἄὠἀἁἃἄ'

上面的Select查询应返回两个结果,但现在只返回一个结果。

本声明

Select * from ED.Test WHERE Name like '%ἀἁἃἄὠἀἁἃἄ%' 

没有返回任何结果。

Select * from ED.Test WHERE Name like N'%ἀἁἃἄὠἀἁἃἄ%' 

返回所有结果。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

对于特殊语言字符,您应使用 COLLATE

Select * from Test 
WHERE Name  COLLATE Greek_100_CS_AS_KS_WS_SC  like N'ἀἁἃἄὠἀἁἃἄ%'

Sql Fiddle演示

对于您的解决方案,我使用了collation_name Greek_100_CS_AS_KS_WS_SC

以下查询会返回所有可能的collation_name

SELECT *
FROM ::fn_helpcollations()

您可以选择适合您的collation_name