我正在使用 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/