【发布时间】:2010-09-19 13:26:40
【问题描述】:
为什么有人会在 SQL 子句中使用WHERE 1=1 AND <conditions>(要么是通过连接字符串获得的 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
【问题讨论】:
-
“为什么有人会使用这种结构来定义视图” 可能是出于习惯。它在静态查询中没有任何功能优势。
标签: sql dynamic-sql