小编典典

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

sql

为什么有人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

阅读 164

收藏
2021-05-05

共1个答案

小编典典

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

and <condition>

并将它们连接在一起。随着1=1在开始时,最初and有一些与之交往。

我从未见过将它用于任何形式的注入保护,因为您说这似乎并没有太大帮助。我 已经将
其用作实现的便利。SQL查询引擎最终将忽略1=1它,因此它不会对性能产生影响。

2021-05-05