C# 比较SQL Server中的字符串

C# 比较SQL Server中的字符串,c#,sql-server,string,comparison,cultureinfo,C#,Sql Server,String,Comparison,Cultureinfo,我正在用C#(WPF)和SQLServer2012企业版编程。我的程序是一个自动应答机,所以我应该将传入的消息与数据库中现有的关键字进行比较 在我的应用程序(在数据库函数中)中,我比较了两个字符串,它们都来自波斯语。其中一个存储在数据库中,另一个来自web服务方法。当我比较两个相似的字符串时,结果表明它们是不同的 例如,我将关键字保存在数据库中,传入的消息也是的。但是比较表明他们是不同的 我也试着用c#比较两种语言,我也使用了CultureInfo,但仍然有问题 我怎样才能解决这个问题呢?那是因

我正在用C#(WPF)和SQLServer2012企业版编程。我的程序是一个自动应答机,所以我应该将传入的消息与数据库中现有的关键字进行比较

在我的应用程序(在数据库函数中)中,我比较了两个字符串,它们都来自波斯语。其中一个存储在数据库中,另一个来自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

我也使用nvarchar。如何在变量之前使用N(而不是在像“ی”这样的值之前?@Babak.Abad在我的回答中,请在字符串前面加上
N
。关键字N不是字符串的一部分,它只是告诉sql server以下字符串可以包含一些unicode字符。发布一个可执行副本。谢谢Keshavarz先生。有这样的问题吗?我希望在发布应用程序之前避免此类问题。是的,“ک”也是如此。