我正在尝试使用存储过程从SQL Server 2008数据库中获取阿拉伯语匹配值。但它没有返回匹配的值..为什么?
我的桌面设计是这样的:
CREATE TABLE #test1
(
col1 nVARCHAR(100) ,
col2 nVARCHAR(100) ,
col3 NVARCHAR(100)
)
INSERT INTO #test1 VALUES(N'لا أتكلم العربية',N'لا أتكلم العربية',N'لا أتكلم العربية')
INSERT INTO #test1 VALUES( ' fdfdf', 'dfdfdf', '45dfdf')
SELECT * FROM #test1
它显示的结果如下......
col1 col2 col3
لا أتكلم العربية لا أتكلم العربية لا أتكلم العربية
fdfdf dfdfdf 45dfdf
给定查询在我搜索阿拉伯语单词时给出了确切的结果..
declare @ColVal nvarchar(100)
set @ColVal= N'لا أتكلم العربية'
print @ColVal
select * from #test1 where col2 like @ColVal
但是当我尝试使用存储过程检索相同的数据时,它不再显示匹配的行,即使它们存在于表中..
我的存储过程是
create proc Sp_TestArabic1 (@colValue nvarchar(100))
as
declare @ColVal nvarchar(100)
begin
set @ColVal= 'N'+@colValue
print @ColVal
select * from #test1 where col2 like @ColVal
end
exec Sp_TestArabic1 'لا أتكلم العربية'
没有给出任何结果,我尝试调试存储过程,所有列都很好地传递了值,但它没有返回正确的结果..
请提供根据条件搜索阿拉伯语单词的确切解决方案......
谢谢..
答案 0 :(得分:3)
你指定unicode文字的方式有几个问题 - 在传递到proc的常量上做,并且不要在搜索前加上'N',否则它会查找{{1 }}
'Nلا أتكلم العربية'
在SQL 2008智能感知中使用箭头键超出阿拉伯文本的兴趣是相反的 - 非常奇怪:)
答案 1 :(得分:1)
使用
exec Sp_TestArabic N'لا أتكلم العربية'
不
exec Sp_TestArabic 'لا أتكلم العربية'