SQL 拼接语句输出_SQL语句拼接常加 where 1=1 是个好习惯

数据库在进行查询的时候,经常看到有的人使用where 1=1和1=0,1=2等的查询,true 则不影响,false则不会扫描

是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误,是为了后面附加and …方便程序逻辑处理用的。

请查看以下代码:

String sql="select * from table where 1=1";

if( conditon1) {

sql=sql+" and var2=value2";

}

if(conditon2) {

sql=sql+" and var3=value3";

}

注意:where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。其实,where 1=1的应用,仅仅只是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态SQL语句的一种方法。

扩展:

where 1=0; 这个条件始终为false,结果不会返回任何数据,只有表结构,可用于快速建表SELECT * FROM table WHERE 1 = 0; 该select语句主要用于读取表的结构而不考虑表中的数据,这样节省了内存,因为可以不用保存结果集。

创建一个新表,而新表的结构与查询的表的结构是一样的,但数据并不拷贝:

create table newtable as select * from oldtable where 1=0;

补充:

在 mybatis 中,为了防止此问题发生,加动态<where>可以自动将第一个and去掉,可以替代上述where 1=1的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值