![](/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.