SQL中where 1=1语句的作用

数据库 SQL Server
where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。但是这看似多余的一条语句,却有其独特的用处。

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

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

查询得出答案:

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

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

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

 

【编辑推荐】
SQL中UNION指令的用法

远程连接sql server服务器的方法

SQL Server中不同用户的权限

测试SQL语句执行时间的方法

SQL Server中各类型的锁(LOCK)

 

责任编辑:段燃 来源: 互联网
相关推荐

2011-03-10 13:18:54

SQLwhere

2020-11-06 07:09:06

SQL注入编程

2020-11-05 09:33:37

SQL数据库编程

2022-11-05 08:37:00

MySQL数据索引

2021-09-16 06:44:07

数据库SQL语句

2021-05-28 07:36:18

MySQLWhereHive

2021-11-15 06:56:45

MyBatis开发项目

2022-03-01 07:37:30

MySQL场景框架

2010-09-06 09:03:17

SQLselect语句

2024-02-20 22:13:49

SQL语句编程

2023-03-29 09:22:03

SQLWhere语句

2010-09-26 09:50:36

SQL Where子句

2010-09-07 11:53:00

SQL语句

2010-09-17 09:35:51

SQL中if语句

2010-11-12 13:08:36

动态sql语句

2010-09-17 16:53:14

SQL中CREATE

2021-07-13 18:31:22

MySQLSQLMode

2011-04-01 15:53:20

T-SQLDateTime

2010-09-26 14:46:19

SQL WHERE子句

2010-09-07 10:35:38

SQL语句
点赞
收藏

51CTO技术栈公众号