简体   繁体   English

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

[英]sql query if parameter is null select all

I've the following query: 我有以下查询:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;

Now I want that if '?' 现在我想要那个'?' is NULL, all records have to be selected. 为NULL,必须选择所有记录。 How can I achieve this in SQL? 我怎样才能在SQL中实现这一点? Thanks 谢谢

Try this: 尝试这个:

SELECT * 
FROM MY_TABLE 
WHERE @parameter IS NULL OR NAME = @parameter;

You can also use functions IFNULL , COALESCE , NVL , ISNULL to check null value. 您还可以使用函数IFNULLCOALESCENVLISNULL来检查空值。 It depends on your RDBMS. 这取决于您的RDBMS。

MySQL : MySQL

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);

or 要么

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);

ORACLE : ORACLE

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);

SQL Server / SYBASE : 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

This will work perfectly but it will return only the not null values. 这将完美地工作,但它将仅返回非空值。

The foll. 这个人。 query will handle the case where the Name (table column value) can also be NULL: 查询将处理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