我下面的查询:“?”SQL查询,如果参数为null,选择所有
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
现在我想,如果为NULL,所有记录必须被选中。 我如何在SQL中实现这一点? 感谢
我下面的查询:“?”SQL查询,如果参数为null,选择所有
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
现在我想,如果为NULL,所有记录必须被选中。 我如何在SQL中实现这一点? 感谢
您也可以使用函数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服务器/SYBASE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
如果'NAME'中有空值,这将不起作用。但是对于不可为空的列,这是要走的路径=)(编辑:至少不在SQL Server中) –
请注意,这会产生较慢的查询,而不是调整SQL,使其在参数为空时不包含where子句。 – Kram
试试这个:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
如何在PHP中使用呢? – prograshid
@prograshid - 只需在PHP中执行查询 –
我试图执行查询字符串,但它在访问结果时给出。说未定义的函数调用fetch_assoc – prograshid
这让我讨厌的T-SQL甚至更多... –