7

テーブルにいくつかの空白の値があり、IF ステートメントでそれらをキャッチできないようです。

私はもう試した

IF @value = ''if @value = NULLどちらも空白の値をキャッチしません。varchar が完全に空白かどうかをテストする方法はありますか?

あはは!null が間違っているかどうかをテストしていたことがわかりました。ありがとう。

4

8 に答える 8

13
ltrim(rtrim(isNull(@value,''))) = ''
于 2008-12-08T18:47:34.843 に答える
8

NULLと比較するには、ISNULLキーワードを使用します。

--Generic example:
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD IS NULL;

--Instead of    

SELECT *
FROM MY_TABLE
WHERE SOME_FIELD = NULL;
于 2008-12-08T18:35:36.067 に答える
3

length(@value)=0または@valueがnullの場合

于 2008-12-08T18:32:58.383 に答える
3
(LTRIM(RTRIM(@Value))=''

トリックを行う必要があります。

于 2008-12-08T18:33:59.940 に答える
2

いくつかのテストを行ったところ、興味深いことがわかりました。私はクエリを次のように書いていました。

SELECT *
FROM TableA
WHERE Val IS NOT NULL
AND LEN(RTRIM(LTRIM(Val))) > 0

ただし、実際に null をチェックする必要はありません。必要なのは、値をトリミングした後に長さをチェックすることだけです。

SELECT *
FROM TableA
WHERE LEN(RTRIM(LTRIM(Val))) > 0

この選択により、NULL だけでなく、空白だけの列も除外されます。

結局のところ、SQL Server は末尾の空白を無視するため、値をトリミングする必要はありません。実際に必要なのは次のとおりです。 SELECT * FROM TableA WHERE LEN(Val) > 0

于 2013-05-08T23:50:54.073 に答える
2

length(rtrim(ltrim(yourcolumnname))) = 0 または yourcolumnname が null の場合

于 2008-12-09T15:23:13.600 に答える
2

LTRIMANDで過度の文字列操作を実行するのではなくRTRIM、最初の「非スペース」の式を検索するだけです。

SELECT
            *
    FROM
            [Table]
    WHERE
            COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0
于 2014-10-20T09:42:02.170 に答える
0

複数のスペース('')を持つフィールドがある場合があるため、次のようにトリミングすると、より良い結果が得られます。

where ltrim(yourcolumnname) = ''
于 2008-12-08T18:37:22.680 に答える