繁体   English   中英

sql查询如果参数为null则选择全部

[英]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;

您还可以使用函数IFNULLCOALESCENVLISNULL来检查空值。 这取决于您的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM