我正在通过搜索栏进行数据库查询,有时希望它能产生所有结果(取决于输入的内容)。
我知道对于SELECT,您可以使用*来选择所有列。是否存在类似的SQL语法:即WHERE name IS *本质上始终为真?
编辑以澄清:
这个子句的本质是使用一个变量来设置名称(我已经说得很清楚了,实际上我不能修改这个子句)。例如WHERE name IS [[inputName]] (inputName是由搜索栏决定的)
发布于 2015-04-27 10:39:55
WHERE ISNULL(name, '') = ISNULL(name, '')(假设'name‘是字符串类型)
只需使列引用自身即可。然而,如果这是您查询的唯一目标,为什么您反对省略WHERE子句呢?
发布于 2015-04-27 10:44:15
如果您想在一条SQL语句中返回所有结果,只需省略WHERE子句:
SELECT <* or field names> FROM <table>;只有当您想要过滤特定字段上的数据时,才应该使用WHERE。在您的情况下,您根本不想进行过滤。
发布于 2015-04-27 10:55:11
实际上,在这种情况下根本不需要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。
https://stackoverflow.com/questions/29886290
复制相似问题