我正在使用C#(WPF)和SQL Server 2012 Enterprise进行编程。我的程序是一个自动应答机,所以我应该将传入的消息与数据库中的现有关键字进行比较。
在我的应用程序中(在数据库函数中),我比较了两个字符串,它们都来自波斯语。其中一个存储在数据库中,另一个来自Web服务方法。当我比较两个相似的字符串时,结果表明它们是不同的!
例如,我在我的数据库中保存了关键字خرید
,并且传入的消息也是خرید
。但比较显示它们不同!
我也尝试两个在c#中进行比较,我也使用CultureInfo
,但我仍有问题。
我该如何解决这个问题?
答案 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函数用'ی'替换所有'ي'。现在好了。