我正在通过搜索栏进行数据库查询,并希望它有时会产生所有结果(取决于输入的内容)
我知道,对于SELECT
,您可以使用*
来选择所有列。是否有类似的SQL语法:即WHERE name IS *
基本上始终为真?
编辑以澄清:
该子句的本质是一个变量用于设置名称(我实际上无法更改子句,这是明确的)。即WHERE name IS [[inputName]]
(inputName由搜索栏决定)
答案 0 :(得分:1)
WHERE ISNULL(name, '') = ISNULL(name, '')
(假设'名称'是字符串类型)
只需自己制作列参考。但是,如果这是查询的唯一目标,为什么不反对省略WHERE子句?
答案 1 :(得分:0)
如果要在SQL语句中返回所有结果,可以省略WHERE
子句:
SELECT <* or field names> FROM <table>;
只有在想要过滤特定字段的数据时,才应使用WHERE
。在您的情况下,您根本不想过滤。
答案 2 :(得分:0)
实际上在这种情况下你根本不需要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
。