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

简介:

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

 

与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

目录
相关文章
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
SQL 关系型数据库 MySQL
MySQL SQL语句给当前日期加一天和减一天
MySQL SQL语句给当前日期加一天和减一天
|
SQL 关系型数据库 MySQL
MYSQL 批量修改表前缀与删除数据表 sql 语句
MYSQL 批量修改表前缀与删除数据表 sql 语句
|
存储 SQL 缓存
【Mysql】执行sql语句后,mysql都做了什么?
【Mysql】执行sql语句后,mysql都做了什么?
【Mysql】执行sql语句后,mysql都做了什么?
|
SQL 关系型数据库 MySQL
MySQL初级篇——常用SQL语句(大总结)(下)
MySQL初级篇——常用SQL语句(大总结)(下)
MySQL初级篇——常用SQL语句(大总结)(下)
|
SQL 关系型数据库 MySQL
MySQL初级篇——常用SQL语句(大总结)(上)
MySQL初级篇——常用SQL语句(大总结) (上)
|
SQL 存储 缓存
MySQL 简介及SQL 语句
MySQL 简介及SQL 语句
167 0
MySQL 简介及SQL 语句
|
SQL 关系型数据库 MySQL
Mysql默认隔离级别下的sql语句执行
Mysql的默认隔离级别为可重复读,在这个隔离级别下,可以防止幻读和不可重复读,但读到的数据有可能不是最新。
|
存储 SQL 缓存
MySQL | SQL 语句是怎样执行的呢?
高产似母猪,废话少说,今天刚好读到一篇关于 MySQL 语句底层如何执行的文章,以下是我的理解,分享给你们。
MySQL | SQL 语句是怎样执行的呢?
|
SQL 存储 自然语言处理
【MySQL】SQL语句执行流程
【MySQL】SQL语句执行流程
97 0
【MySQL】SQL语句执行流程