1分钟搞懂 where 1=1 和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+"'";
}

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

sql=" select * from table where "

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

但是加上 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表是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值