18){ sql=sql+ "age=" + age;}if(sex.equals("男")){ sql=sql_where 1=0">
当前位置:   article > 正文

1分钟搞懂 where 1=1 和where 1=0 的作用

where 1=0

一、sql 语句之 where 1=1

先说下它的目的,where 1=1 就是为了使该 sql 语句的条件永远为true。
通常用于(多)条件查询,在构造动态sql语句时可以防止sql语句结构不当而出错。
举个例子就加清晰了,比如说现在要根据几个条件查询一张表,也就是常说的多条件查询:

String sql="select * from table where ";
if(age>18){
	sql=sql+ "age=" + age;
}
if(sex.equals("男")){
	sql=sql + "and sex='"+sex+"'";
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如果上述的两个 if 判断语句都不成立,那么,最终的 sql 动态构造语句变为:

sql=" select * from table where "
  • 1

很明显,运行都会报错,更别说查询数据了。

但是加上 where 1=1 之后,即使两个if都不正确,仍然可以正常执行语句。

其实就是为了构造一个恒等式,写成2=21+1=2,也是可以的,因为1=1运算开销更小,且容易记忆,所以一般都采用这种形式

二、sql 语句之 where 1=0

where 1=0 这个条件始终为 false,结果不会返回任何数据,只有表结构,可用于快速建表 。
可以利用
create table newtable as select * from oldtable where 1=0;
创建一个新表,而新表的结构与查询的表(旧的表)的结构是一样的。

举个例子:
这是原始的表::
在这里插入图片描述

现在利用 where 1=0 来创建新的表:
在这里插入图片描述
可以看到,新的表里面没有数据,但是表的结构与原来的user表是一样的。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号