首页 > 解决方案 > 波斯字符的 NVARCHAR SQL 类型问题

问题描述

我在使用 NVARCHAR 类型和波斯字符 'ی' 和 'ک' 的 SQL 中遇到问题,我在表中有一些记录,例如:

+----- Name ------+
+----- علی ------+

当我想从这个表中选择时:

select * from [Table] when Name like 'علی'
select * from [Table] when Name='علی'
select * from [Table] when Name like 'علي'
select * from [Table] when Name='علي'

它返回 NULL!我发现当我在字符串之前使用 N 时,它可以解决,但我需要在 SP 中使用 N 之前的参数并尝试以下操作:

declare @name nvarchar(max)='علی'
select * from [Table] when Name like N''+@name

但不幸的是,它不起作用,我发现当我将 'علی' 分配给 nvarchar 时,会自动将 'ی' 转换为 'ي'!!!

我该如何解决?

标签: sql-serverstringtsqlfarsi

解决方案


Collation1-搜索并找到最Unicode适合您的数据库。在每种情况下都可能不同。

2-如果您使用的是编程语言,则可以在那里处理。当您要保存记录时,您应该更改ی ک ه并统一它们。这意味着您应该始终使用相同的字符。在保存、更新和选择中(在 where 子句中)。

3-您可以触发Insert和统一字符。


推荐阅读