小编典典

为什么有人会使用 WHERE 1=1 AND在 SQL 子句中?

all

为什么有人会WHERE 1=1 AND <conditions>在 SQL 子句中使用(无论是通过连接字符串获得的 SQL,还是视图定义)

我在某处看到这将用于防止 SQL 注入,但这似乎很奇怪。

如果有注入WHERE 1 = 1 AND injected OR 1=1将有相同的结果injected OR 1=1

稍后编辑:视图定义中的用法如何?


谢谢您的回答。

不过,我不明白为什么有人会使用这种构造来定义视图,或者在存储过程中使用它。

以此为例:

CREATE VIEW vTest AS
SELECT FROM Table WHERE 1=1 AND table.Field=Value

阅读 115

收藏
2022-04-24

共1个答案

小编典典

如果条件列表在编译时未知,而是在运行时构建,则您不必担心是否有一个或多个条件。你可以像这样生成它们:

and <condition>

并将它们连接在一起。在1=1开头,首字母and有一些关联。

我从未见过它用于任何类型的注射保护,正如你所说,它似乎没有多大帮助。我 已经 看到它被用作实现便利。SQL
查询引擎最终会忽略它,1=1因此它应该不会影响性能。

2022-04-24