sql-server - 波斯字符的 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 时,会自动将 'ی' 转换为 'ي'!!!
我该如何解决?
解决方案
Collation
1-搜索并找到最Unicode
适合您的数据库。在每种情况下都可能不同。
2-如果您使用的是编程语言,则可以在那里处理。当您要保存记录时,您应该更改ی ک ه
并统一它们。这意味着您应该始终使用相同的字符。在保存、更新和选择中(在 where 子句中)。
3-您可以触发Insert
和统一字符。
推荐阅读
- android - 为不同的显示尺寸工作时使用 XML 更改图标尺寸?
- ios - 使用导航控制器推送视图控制器后选项卡栏不显示
- ruby-on-rails - Rails ActionMailer 在附件中的换行符之前注入回车符
- command-line-interface - IBM Cloud 命令行界面
- iframe - 如何抑制 X-Frame-Options SAMEORIGIN 响应标头?
- graphql - 如何在 GraphQL 中为键值定义枚举
- go - 从 golang 中的传入 https 请求中提取通用名称
- matlab - 从 MATLAB 中的时间序列中删除重复值
- debugging - 对列表的先前元素求和的函数的输出不正确
- java - 如何获取在类中声明为映射的常量