String sql = "select * from sys_user where 1=2"与String sql = "select * from sys_user where 1=1的对比介绍
来源:互联网 发布:svm算法 编辑:程序博客网 时间:2024/06/04 18:23
今天在公司的项目中看到String sql = "select * from sys_user where 1=2";还有String sql = "select * from sys_user where 1=1";这些sql语句,看了半天不大明白什么意思,请教了一下大佬,总结整理了一下;
String sql = "select * from sys_user where 1=2和
String sql = "select * from sys_user where 1=1的比较;
相同点:可以拼接字符串;
比如:
String sql="select * from user where 1=1 ";
if(username!=null) sql=sql+ " and username='"+username+"'";
if(password!=null) sql=sql+ " and password='"+password+"'";
select id from sys_user where 1=1
<if test="username !=null and password != ''">
AND name = #{name}
</if>
<if test="firstType !=null and firstType != ''">
AND firstType = #{firstType}
</if>
<if test="secondType !=null and secondType != ''">
AND secondType = #{secondType}
</if>
因为我这里是动态查询,假如第一个条件不成立,那么如果我没有使用 1 = 1 ,
我的SQL就会变成 select XXX from XXX where and XXXX ,
如果我加了1 = 1,就会变成 select XXX from XXX where 1 = 1 and XXXX;
从这里面可以看出在动态sql中.加了这个1=1是可以拼接sql语句的;
不同点:
String sql="select * from user where 1=1 ";
此sql返回的永远为真,也就是true,
可以理解为条件永远为真,查出的是所有数据;
相当于String sql="select * from user;
比如:
String sql="select * from user where 1=1 ";
if(username!=null) sql=sql+ " and username='"+username+"'";
if(password!=null) sql=sql+ " and password='"+password+"'";
后面两个条件username,password两者都为空也是可以查询的,因为还有前面的查询条件;
String sql = "select * from sys_user where 1=2
此sql返回的永远为假,也就是false,
可以理解为where条件不成立,虽然执行了查询,但是返回的是空数据;
使用这句sql永远不能查询到数据;
建议使用上面的1=1好点;
附:本人菜鸟如有错误欢迎指正,谢谢诸位大佬;
阅读全文
0 0
- String sql = "select * from sys_user where 1=2"与String sql = "select * from sys_user where 1=1的对比介绍
- sql中的“select from 1” 和“where 1=1”
- select * from table where 1=1
- select * from table where 1=1
- select * from table where 1=1
- select * from table where 1=1
- select from table where 1=1
- select * from table where 1=1
- select * from book where 1=1
- select * from table where 1=2 的作用
- SELECT * FROM {0} WHERE 0 = 1 的意义
- select * from tablename where 1=0的意义
- select count(1) from user where id=2
- SQL中的 where 1= 1?以及select 1 from table?意义!
- select * from 表名 where 1=1
- select * from table1 where id =‘1’ for update
- ROWNUM用法--SELECT * FROM T WHERE ROWNUM=1
- discuz7.2问题SQL:SELECT * FROM [Table]notelist WHERE closed='0' AND app1'-5' LIMIT 1
- 第一周9.11
- jmeter测试Oracle数据库
- 小学生学嵌入式:)Linux_字符设备驱动_流水灯的实现
- 浅析mysql内存参数之-- binlog_cache_size
- HTML常用标签+CSS基本语法
- String sql = "select * from sys_user where 1=2"与String sql = "select * from sys_user where 1=1的对比介绍
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 线性表的Java实现
- 从零开始学_JavaScript_系列(66)——AMD、CMD、CommonJS
- C++基础学习笔记:运算符重载
- java内存分析
- 简单的爬取网页图片
- Java基础方面面试总结
- kinect v2.0原理介绍之十一:录制视频