1

ストアドプロシージャを使用して、SQLServer2008データベースからアラビア語に一致する値を取得しようとしています。しかし、一致した値は返されません。なぜですか?

私のテーブルデザインは次のようなものです。

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 'لا أتكلم العربية'

結果が得られません。ストアドプロシージャのデバッグを試みました。すべての列が値を適切に渡しますが、正しい結果が返されません。

条件に基づいてアラビア語を検索するための正確な解決策を提供してください...

ありがとうございました..

4

2 に答える 2

3

Unicode リテラルを指定する方法にはいくつかの問題があります。proc に渡された定数に対して実行し、検索の前に「N」を追加しないでください。'Nلا أتكلم العربية'

CREATE  proc Sp_TestArabic1 (@colValue nvarchar(100))
as
  begin
    select * from #test1 where col2 like @colValue
  end

exec Sp_TestArabic1 N'لا أتكلم العربية'

SQL 2008のインテリセンスでアラビア語のテキストに矢印キーを使用すると、興味がなくなります-非常に奇妙です:)

于 2012-06-04T06:13:18.137 に答える
1

使用する

exec Sp_TestArabic N'لا أتكلم العربية'

いいえ

exec Sp_TestArabic 'لا أتكلم العربية' 
于 2012-06-04T06:59:17.420 に答える