SQL LIKE 运算符不适用于亚洲语言 (SQL Server 2008)

问题描述 投票:0回答:2

我有一个 NVarchar 类型的 SQL Server 数据库列,并用标准波斯语字符填充。当我尝试对其运行一个包含 LIKE 运算符的非常简单的查询时,结果集变为空,尽管我知道查询项存在于表中。这是一个非常简单的示例查询,但其行为不正确:

SELECT * FROM T_Contacts WHERE C_ContactName LIKE '%ف%'

ف 是波斯语字符,ContactName 列包含多个包含该字符的条目。

请告诉我应该如何重写表达式或应该进行哪些更改。请注意,我的数据库的排序规则是

SQL_Latin1_General_CP1_CI_AS

非常感谢

sql-server select unicode collation nvarchar
2个回答
7
投票

此外,如果这些值存储为

NVARCHAR
(我希望它们是这样!!),您应该 always 对任何字符串文字使用
N'..'
前缀,以确保不会得到任何不需要的转换回非 Unicode
VARCHAR

所以你应该搜索:

SELECT * FROM T_Contacts 
WHERE C_ContactName COLLATE Persian_100_CI_AS LIKE N'%ف%'

4
投票

不应该是:

 SELECT * FROM T_Contacts WHERE C_ContactName LIKE N'%ف%'

即,比较字符串前面有

N
,因此它会将其视为
nvarchar

© www.soinside.com 2019 - 2024. All rights reserved.