WHERE子句匹配阿拉伯字符串的问题

moh*_*eeh 17 t-sql database sql-server unicode

我有一个SQL Server 2005数据库,其中我有一些表包含阿拉伯文本.这些字段的数据类型是NVARCHAR(n).

表格中的阿拉伯文字显示正确,选择时,它们会正确显示.

问题是搜索阿拉伯语文本会产生0行.

select * from table_name
where name='arabic_text'
Run Code Online (Sandbox Code Playgroud)

这将检索没有行,其中有一个具有此值的名称.

你能指导我如何编写查询吗?

Con*_*rix 32

尝试在文本之前添加N,例如

select * from table_name
where name=N'arabic_text'
Run Code Online (Sandbox Code Playgroud)

  • 在单引号之外用"N"作为测试比较前缀的需要是因为数据类型(NVARCHAR),当用非ASCII字符搜索时(这就是为什么你不会注意到搜索英文文本的问题.N代表"国民化",但意味着UTF(我假设为8). (3认同)