`
jackroomage
  • 浏览: 1196945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

SQL中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

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

查询得出答案:

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

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

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

分享到:
评论
2 楼 kandari 2012-02-29  
create table newtable as select * from oldtable 这个创建新表,同样包含查询表中的数据
1 楼 kandari 2012-02-29  
select语句主要用于读取表的结构而不考虑表中的数据???

相关推荐

    sql中where 1=1 与1=0的作用1

    ②种假设 如果两个IF都不成立,那么,语句变为: MySqlStr=”select * from table where 1=1”,现在,我们来看这条语句,

    SQL 语句中 where 条件后 写上 1=1 是什么意思!.doc

    SQL 语句中 where 条件后 写上 1=1 是什么意思!.doc

    在SQL语句中"where 1=1"是什么意思

    java调试中的小问题解决和背景知识; 在SQL语句中"where 1=1"是什么意思.

    java定时执行sql语句

    通过配置数据库连接信息和要执行的sql语句,可实现定时执行多个sql语句。 所要执行的语句只能是写死的,可支持sqlserver mysql oracle。 配置说明: config/sys.properties 中指定数据库类型及连接信息,执行间隔...

    动态拼接sql语句工具类,拼接where后面语句

    动态拼接sql语句工具类,拼接where后面语句 配合原生jdbc仿动态sql注入 if (ObjectUtil.isNotEmpty(maxLat)&&ObjectUtil.isNotEmpty(minLat)){ sqlParamList.add(new SqlParam("lat",minLat, SqlOpEnum.GE)); ...

    sql语句中where 1=1的作用

    在看程序时时,发现基本只要是拼凑的SQL语句,基本上都会这样写:

    Golang sqlx 使用sql语句 Where in 解决办法

    方法1、使用语言的for语句循环生成SQL语句中的“?”,类似这样: 新建方法 func placeholders(n int) string { var b strings.Builder for i := 0; i 0 { b.WriteString("?") } return b.String() }  调用...

    sql where 1=1的优缺点分析

    一、不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: 代码如下: ...

    SQLServer表数据转化为sql语句(存储过程,一键批量导出、导入)

    ,@sqlWhere nvarchar(500) --where条件(传空时,导出全部数据) 不足: 不支持text,binary,image,text等类型; 编写:liangning 2019/4/3. 测试: exec dbo.BuildSqlToExportData2 'Table1','ParentID=''...

    SQL语句大全 实例

    各种sql实用例子 (1)数据记录筛选: ...sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式" (3)删除数据记录: sql="deletefrom数据表where条件表达式" sql="deletefrom数据

    经典SQL语句大全

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    动态SQL语句基本语法。动态SQL语句基本语法

    1 :普通SQL语句可以用Exec执行 例: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类...

    OA系统常用SQL语句

    涉及OA办公所有SQL语句,具体包含:人事管控、公文档案、日常办公、流程管理、OA互联、部门主页、我的办公室(远程传阅)

    经典sql语句大全 sql语句

    更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:...

    SQL语句大全

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    海信商海导航SQL修改语句

    海信商海导航SQL修改语句/* 删除非储值卡会员*/ delete xvipdb..vip where canstore='0' delete xvipdb..viptopos where canstore='0' /* 修改上次结帐日期*/ update SysDB..Syscfg set ItemValue='2007-04-10...

    数据库SQL查询语句练习题.doc

    更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串) 排序:select * from table1 order by field1,field2 ...

    SQL WHERE 条件解析器

    SQL 的WHERE条件解析器,在做列表控件时开发。 能够将常用的WHERE条件解析成一个条件树。 可以对条件树进行相关操作后再还源成SQL语句。

Global site tag (gtag.js) - Google Analytics