?
がnullの場合、すべてのレコードを返すように次のクエリを変更できますか?
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
?
がnullの場合、すべてのレコードを返すように次のクエリを変更できますか?
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
これを試して:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
関数、、、を使用IFNULL
しCOALESCE
てnull値をチェックNVL
することもできます。ISNULL
RDBMSによって異なります。
MySQL:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);
また
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);
オラクル:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);
SQL Server / SYBASE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
foll。クエリは、名前(テーブルの列の値)も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以外の値のみを返します。