在简单的sql书中,有一部分代码提到我是否使用where 1 = 0,我可以安全地添加一个OR条件,如:
WHERE
1=0
OR name LIKE '%Toledo%'
OR billaddr LIKE '%Toledo%'
OR shipaddr LIKE '%Toledo%'
Run Code Online (Sandbox Code Playgroud)
我没有得到它为什么当我使用where 1 = 0我可以安全地添加一个OR语句
我可以使用下面的东西吗?
WHERE
1=1
OR name LIKE '%Toledo%'
OR billaddr LIKE '%Toledo%'
OR shipaddr LIKE '%Toledo%'
Run Code Online (Sandbox Code Playgroud)
我知道这where 1=1是添加And语句的快捷方式.
我理解,因为where 1 =1会返回true.我也可以用它来表达Or声明吗?
Istill没有得到这个部分where 1 = 0
任何解释都会很棒.
这取决于您正在处理的布尔操作的类型.如果要添加可变数量的AND语句,则使用总是求值为true的语句,例如1 = 1.另一方面,如果要对OR语句执行相同操作,则应使用计算结果为false的语句,例如1 = 0.
假设你有一个x带有不确定真值的布尔变量(它可能是真的,或者它可能是假的.你不知道.)现在,如果你找到了值x AND false,你就得到了false,不管它的值x是什么.
另一方面,如果你看x OR true,你会得到true.同样,这不管真相的价值x.
在您的语句中,您希望硬编码值对查询的逻辑没有影响.由于false OR a OR b OR c在逻辑上等同于a OR b OR c,硬编码语句无效.在另一种情况下,true AND a AND b AND c相当于a AND b AND c.
| 归档时间: |
|
| 查看次数: |
4224 次 |
| 最近记录: |