私は次のクエリを持っています:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
今、私は「?」 NULLの場合、すべてのレコードを選択する必要があります。 SQLでこれを実現するにはどうすればよいですか?ありがとう
関数IFNULL
、COALESCE
、NVL
、ISNULL
を使用してnull値をチェックすることもできます。 RDBMSに依存します。
MySQL:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);
または
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);
Oracle:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);
SQL Server/[〜#〜] sybase [〜#〜]:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
これを試して:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
失敗した。クエリは、名前(テーブル列の値)もNULLにできる場合を処理します。
SELECT NAME, SURNAME FROM MY_TABLE WHERE COALESCE(NAME,'') = COALESCE(?,NAME,'');
SELECT NAME
FROM MY_TABLE
WHERE NAME LIKE CASE WHEN ? IS NOT NULL THEN ? ELSE '%' END
これは完全に機能しますが、null以外の値のみを返します。