SQL 在哪里是什么



我正在通过搜索栏进行数据库查询,并希望它有时会产生所有结果(取决于输入的内容)

我知道对于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

最新更新