比较SQL Server中的字符串

时间:2014-01-01 19:55:17

标签: c# sql-server string comparison cultureinfo

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

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

例如,我在我的数据库中保存了关键字خرید,并且传入的消息也是خرید。但比较显示它们不同!

我也尝试两个在c#中进行比较,我也使用CultureInfo,但我仍有问题。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您需要确保在将值存储在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

答案 1 :(得分:0)

这是因为'ی',其中一个是'ي',另一个是'ی'。 您可以用其他替换。所以在你的插入内部使用replace函数用'ی'替换所有'ي'。现在好了。