sql中1=1和1=0的⽤处
where 1=1
where 1=1有什么⽤?在SQL语⾔中,写这么⼀句话就跟没写⼀样。
select * from table1 where 1=1与select * from table1完全没有区别,甚⾄还有其他许多写法,1<>2,'a'='a','a'<>'b',其⽬的就只有⼀
个,where的条件为永真,得到的结果就是未加约束条件的。
在SQL注⼊时会⽤到这个,例如select * from table1 where name='lala'给强⾏加上select * from table1 where name='lala' or 1=1这就⼜变成了⽆约束的查询了。
最近发现的妙⽤在于,在不定数量查询条件情况下,1=1可以很⽅便的规范语句。例如⼀个查询可能有name,age,height,weight约束,也可能没有,那该如何处理呢?
String sql=select * from table1 where 1=1
为什么要写多余的1=1?马上就知道了。
if(!name.equals("")){
sql=sql+"name='"+name+"'";
}
if(!age.equals("")){
sql=sql+"age'"+age+"'";
}
if(!height.equals("")){
sql=sql+"height='"+height+"'";
}
if(!weight.equals("")){
sql=sql+"weight='"+weight+"'";
}
如果不写1=1呢,那么在每⼀个不为空的查询条件⾯前,都必须判断有没有where字句,否则要在第⼀个出现的地⽅加where
sql约束条件大于0
where 1=0
"SELECT * FROM strName WHERE 1 = 0";
不理解为什么有1=0?
查询得出答案:
该select语句主要⽤于读取表的结构⽽不考虑表中的数据,这样节省了内存,因为可以不⽤保存结果集。
另外,这个⽤在什么地⽅呢?主要⽤于创建⼀个新表,⽽新表的结构与查询的表的结构是⼀样的。如下SQL语句:
create table newtable as select * from oldtable where 1=0;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。