テーブルにいくつかの空白の値があり、IF ステートメントでそれらをキャッチできないようです。
私はもう試した
IF @value = ''
if @value = NULL
どちらも空白の値をキャッチしません。varchar が完全に空白かどうかをテストする方法はありますか?
あはは!null が間違っているかどうかをテストしていたことがわかりました。ありがとう。
テーブルにいくつかの空白の値があり、IF ステートメントでそれらをキャッチできないようです。
私はもう試した
IF @value = ''
if @value = NULL
どちらも空白の値をキャッチしません。varchar が完全に空白かどうかをテストする方法はありますか?
あはは!null が間違っているかどうかをテストしていたことがわかりました。ありがとう。
ltrim(rtrim(isNull(@value,''))) = ''
NULLと比較するには、ISNULLキーワードを使用します。
--Generic example:
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD IS NULL;
--Instead of
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD = NULL;
length(@value)=0または@valueがnullの場合
(LTRIM(RTRIM(@Value))=''
トリックを行う必要があります。
いくつかのテストを行ったところ、興味深いことがわかりました。私はクエリを次のように書いていました。
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
length(rtrim(ltrim(yourcolumnname))) = 0 または yourcolumnname が null の場合
LTRIM
ANDで過度の文字列操作を実行するのではなくRTRIM
、最初の「非スペース」の式を検索するだけです。
SELECT
*
FROM
[Table]
WHERE
COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0
複数のスペース('')を持つフィールドがある場合があるため、次のようにトリミングすると、より良い結果が得られます。
where ltrim(yourcolumnname) = ''