56

?がnullの場合、すべてのレコードを返すように次のクエリを変更できますか?

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
4

4 に答える 4

86

これを試して:

SELECT * 
FROM MY_TABLE 
WHERE @parameter IS NULL OR NAME = @parameter;
于 2012-11-20T13:25:39.483 に答える
42

関数、、、を使用IFNULLCOALESCEてnull値をチェックNVLすることもできます。ISNULLRDBMSによって異なります。

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);
于 2012-11-20T13:40:05.787 に答える
1

foll。クエリは、名前(テーブルの列の値)もNULLになる可能性がある場合を処理します。

SELECT NAME, SURNAME FROM MY_TABLE WHERE COALESCE(NAME,'') = COALESCE(?,NAME,'');
于 2019-05-16T06:31:48.567 に答える
0
SELECT NAME
FROM MY_TABLE
WHERE NAME LIKE CASE WHEN ? IS NOT NULL THEN ? ELSE '%' END

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

于 2018-07-06T03:03:53.450 に答える