我正在通过搜索栏进行数据库查询,并希望它有时会产生所有结果(取决于输入的内容)
我知道对于SELECT
您可以使用*
来选择所有列。是否有类似的SQL语法:即 WHERE name IS *
基本上永远是真的?
编辑以澄清:
子句的性质是使用变量来设置名称(我实际上无法更改子句,这已经很清楚了)。 WHERE name IS [[inputName]]
(inputName 是由搜索栏决定的)
WHERE ISNULL(name, '') = ISNULL(name, '')
(假设"名称"是字符串类型)
只需使列引用本身即可。但是,如果这是查询的唯一目标,为什么反对省略 WHERE 子句?
如果要在 SQL 语句中返回所有结果,只需省略 WHERE
子句:
SELECT <* or field names> FROM <table>;
仅当要筛选特定字段上的数据时,才应使用WHERE
。在您的情况下,您根本不想过滤。
实际上,在这种情况下,您根本不需要WHERE
子句。但是如果你坚持,那么你应该写你的谓词,让它总是返回 true。这可以通过多种方式完成:
任何谓词,例如:
WHERE 1=1
带列:
WHERE name = name OR name is null
LIKE
:
WHERE name LIKE '%' OR name is null
使用传递的参数:
WHERE name = @name OR @name is null
当然,你可以想到更多。但我认为你需要最后一个。如果需要所有行,请从应用程序层传递NULL
。