为什么有人会在查询中输入“where 1=1”?

gor*_*ric 19 sql-server-2005

我今天在我们的数据库中遇到了一个视图,其中 where 子句中的第一个语句是where 1 = 1. 这不应该对每条记录都返回 true 吗?如果不过滤任何记录,为什么有人会写这个?

Ben*_*enV 41

一些动态查询构建器包含此条件,以便可以添加任何“真实”条件,AND而无需执行类似if (first condition) 'WHERE' else 'AND'.

  • 当“查询构建器”是编写代码以手动连接到 SQL 语句的人时,通常会出现这种情况。有时引入更正式的查询构建库会消除它。 (3认同)

小智 5

如果您的程序中有许多生成类似查询的SQL 语句构建点,您可以通过这个技巧标记检查过的一个。如果句子是关于计数的,您可以使用下面的代码,以便您可以42从 SQL 日志中提取出来。

select count(42) from table
Run Code Online (Sandbox Code Playgroud)