SQL语句中where 1=1的基本用法

本文介绍了SQL语句中使用“where 1=1”的技巧及其应用场景,包括动态拼接SQL语句和拷贝表结构。通过具体示例展示了该技巧如何简化SQL语句的构造过程,并保持代码的整洁性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚才有一位网友说了本文的不足,我再此重新编辑重发一篇整理过的,希望多提意见。

与where 1=1等效的类似语句有1<>2,'a'='a','a'<>'b',其目的是where的条件为永真,得到的结果就是未加约束条件的。那么where 1=1 有什么用处呢?


使用一 拼接SQL语句

一个简单拼接SQL语句的例子:

String sql = select * from table student where 1=1;
StringBuffer buffer = new StringBuffer();
buffer.append(sql);

if (null != name && !"".equals(name)) {
buffer.append("and name = " + name);
}

if (null != phone && !"".equals(phone)) {
buffer.append("and phone like '" + phone + "'");
}

ibatis中的动态语句的拼接与其原理相似,也可以加1=1。

若不使用1=1,拼接会有多麻烦呢?String sql = select * from table student where;这个语句还在,那么如果三个条件都是空呢?where就是光秃秃了。再设想,若一个空,一个不空或者两个都不空,拼接的语句就不一样了。这只是两个条件,要是更多的条件呢?体会到1=1的用处了吧。我们可以发现 or 1 = 1拼在后面可以恒使条件成立。

使用二 拷贝表或复制表结构

拷贝表
create student_bak as select * from student where 1=1;

复制表结构
create student_bak as select * from student where 1<>1;

参考博客:http://www.accessoft.com/article-show.asp?id=6912

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值