私は以下の表を持っている:Where句で空文字?
CREATE TABLE SOAUDIT
(SOU_USER CHAR(8 BYTE),
SOU_ORDREF CHAR(8 BYTE),
SOU_TYPE CHAR(1 BYTE),
SOU_DESC CHAR(50 BYTE))
最初の3つの列に定義された一意のインデックス(私たちが制御することはできません何かあるなし主キーは、)があります。
、テーブル内のいくつかのレコードがあります。ユーザーのためにSOU_ORDREFの値「プルーストは」8文字の空の文字列であることが表示されます精密検査で
| SOU_USER | SOU_ORDREF | SOU_TYPE | SOU_DESC |
|----------|------------|----------|------------------|
| proust | | S | recherche |
| joyce | 12345678 | S | pelurious |
| orwell | 19841984 | T | doubleplusungood |
| camus | 34598798 | P | peiner |
。
私ができる必要があることは、SQL Serverデータベースから受信する(ちょうど問題を複雑にするだけです)独自の値に基づいてこのテーブルをクエリすることです.SOU_ORDREFの場合、空白のフィールドになります。これは私が探していますレコードを返さない
SELECT *
FROM SOAUDIT
WHERE (SOU_USER, TRIM(SOU_ORDREF), SOU_TYPE)
IN (('proust', null, 'S'))
を私は次のように問合せをリライトする場合:
SELECT *
FROM SOAUDIT
WHERE (SOU_USER, SOU_TYPE)
IN (('proust', 'S'))
AND TRIM(sou_ordref) is null
その後、私はを実行してを取得します。
しかし、私はWHERE
句に複数のレコードを渡したいので、2番目のバージョンは本当に助けになりません。
8文字の空の文字列がnullではありません... '' '(8スペース)を試しましたか? – JohnHC
はい、しました。出来た。しかし、プロダクションでは、フィルタリングするレコードには、このような値の空の文字列が含まれます。 –