web-dev-qa-db-ja.com

パラメータがnullの場合、SQLクエリ

私は次のクエリを持っています:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;

今、私は「?」 NULLの場合、すべてのレコードを選択する必要があります。 SQLでこれを実現するにはどうすればよいですか?ありがとう

38
Franky

関数IFNULLCOALESCENVLISNULLを使用して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);
31
Parado

これを試して:

SELECT * 
FROM MY_TABLE 
WHERE @parameter IS NULL OR NAME = @parameter;
64
Mahmoud Gamal

失敗した。クエリは、名前(テーブル列の値)もNULLにできる場合を処理します。

SELECT NAME, SURNAME FROM MY_TABLE WHERE COALESCE(NAME,'') = COALESCE(?,NAME,'');
0
variable
SELECT NAME
FROM MY_TABLE
WHERE NAME LIKE CASE WHEN ? IS NOT NULL THEN ? ELSE '%' END

これは完全に機能しますが、null以外の値のみを返します。

0
Pushkar Saxena