![](/img/trans.png)
[英]Oracle : sql select query if condition parameter is null then ignore the parameter
[英]sql query if parameter is null select all
我有以下查詢:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
現在我想要那個'?' 為NULL,必須選擇所有記錄。 我怎樣才能在SQL中實現這一點? 謝謝
嘗試這個:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
您還可以使用函數IFNULL
, COALESCE
, NVL
, ISNULL
來檢查空值。 這取決於您的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 NAME
FROM MY_TABLE
WHERE NAME LIKE CASE WHEN ? IS NOT NULL THEN ? ELSE '%' END
這將完美地工作,但它將僅返回非空值。
這個人。 查詢將處理Name(表列值)也可以為NULL的情況:
SELECT NAME, SURNAME FROM MY_TABLE WHERE COALESCE(NAME,'') = COALESCE(?,NAME,'');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.