0

を使おうとしていますFREETEXT。@name フィールドには null が含まれることがよくありますが、これはプログラムのエラーではありません。これは、他の検索アプローチが使用されていることを意味します。

もともと持っていた

DECLARE @Name varchar(50) = ... -- some value which many be NULL or blank

SELECT ID 
FROM dbo.Data WITH (NOLOCK) 
WHERE  FREETEXT(*, @Name)

私は試した

DECLARE @Name varchar(50) = ... -- some value which many be NULL or blank

SELECT ID 
FROM dbo.Data WITH (NOLOCK) 
WHERE @Name IS NOT NULL AND  FREETEXT(*, @Name)

しかし、私はまだ得る

メッセージ 7645、レベル 15、状態 2、行 3 Null または空の全文述語。

これを回避するための良いアプローチは何ですか?

追記

SELECT ID 
FROM dbo.data WITH (NOLOCK) 
WHERE FREETEXT(*, ' ')

また、スローとエラー

4

2 に答える 2

1

Zohar からの更新されたステートメントは機能しているようです。以下に宣言ステートメントを追加しました。

宣言 @Name varchar(20) = ''
set @Name = ISNULL(NULLIF(@Name, ''), ''); Author_id from Author where freetext(*,@Name) を選択

于 2015-07-17T08:27:28.673 に答える