c# - 在 SQL Server 中比较字符串

标签 c# sql-server string comparison cultureinfo

我正在使用 C# (WPF) 和 SQL Server 2012 Enterprise 进行编程。我的程序是一个自动应答机,所以我应该将收到的消息与数据库中的现有关键字进行比较。

在我的应用程序中(在数据库函数中),我比较了两个都来自波斯语的字符串。其中一个存储在数据库中,另一个来自 Web 服务方法。当我比较两个相似的字符串时,结果显示它们是不同的!

例如,我在我的数据库中保存了关键字 خرید,传入的消息也是 خرید。但是比较一下就知道不一样了!

我也尝试在 C# 中比较它们,我也使用 CultureInfo 但我仍然有问题。

我该如何解决这个问题?

最佳答案

您需要确保在将值存储在 sql 变量中时,您对变量使用 NVARCHAR 数据类型,并且在将值分配给变量时使用 N 前缀你的字符串告诉 sql server 字符串中会有 unicode 字符。尝试以下方法来了解自己。

DECLARE @Nvar1 NVARCHAR = N'خرید'
DECLARE @Nvar2 NVARCHAR = N'خرید'

IF (@Nvar1 = @Nvar2)
 BEGIN
   PRINT 'Test 1'
   PRINT 'Strings Are Equal'
 END 
ELSE
 BEGIN
   PRINT 'Test 1'
   PRINT 'Strings Are Not Equal'
 END

Test 1
Strings Are Equal


DECLARE @Nvar3 NVARCHAR = N'ی'
DECLARE @Nvar4 NVARCHAR = N'ي'

IF (@Nvar3 = @Nvar4)
 BEGIN
   PRINT 'Test 2'
   PRINT 'Strings Are Equal'
 END 
ELSE
 BEGIN
   PRINT 'Test 2'
   PRINT 'Strings Are Not Equal'
 END

Test 2
Strings Are Not Equal

关于c# - 在 SQL Server 中比较字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872589/

相关文章:

c# - 为什么带有嵌套数组的 Marshal.PtrToStructure 会抛出 ExecutionEngineException?

用户输入数据的 C# 存储

sql-server - 如何为 Microsoft SQL Server 中的特定数据库启用 CLR 集成?

ruby - 有没有一种简单的方法可以在 Ruby 中执行多行缩进字符串?

javascript - 为什么我的代码在反转的字符串之前输出未定义?

c# - 在 WHERE 查询中使用数组作为比较

c# - 如何将 windows-1250 中编码的字符串转换为 unicode?

c# - 如何显示varBinary字段数据

javascript - 如何从 SQL Server 表中获取 JSON 对象?

c - 在 strdup C 之前附加字符串