ITKeyword,专注技术干货聚合推荐

注册 | 登录

SQL中where 1=1语句的作用

jackroomage 分享于

2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

推荐:sql语句中where 1=1的作用

where 1=1 最近看到很多sql里用到where 1=1,原来觉得这没用嘛,但是又想到如果没用为什么要写呢?于是在网上 查了查,在这里就浅谈一下: 1=1 永真, 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?马上就知道了。

推荐:sql语句:for update 的作用

SELECT quantity INTO qty_on_hand FROM inventory WHERE product = 'TENNIS RACKET' FOR UPDATE OF quantity;

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

今天看到:"SELECT * FROM strName WHERE 1 = 0";
不理解为什么有1=0?

查询得出答案:

该select语句主要用于读取表的结构而不考虑表中的数据,这样节省了内存,因为可以不用保存结果集。

另外,这个用在什么地方呢?主要用于创建一个新表,而新表的结构与查询的表的结构是一样的。如下SQL语句:

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

推荐:sql中的having和where的作用

例子:   select max(orgid) from auditresults where warningrulesid=100000021 having orgid>=100000737 group by orgid;     select max(orgid) from auditre

where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。但是这看似多余的一条语句,却有其独特的用处。 select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。