`
jasonw68
  • 浏览: 148929 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sql where 1=1 0=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;

 

分享到:
评论
2 楼 xiangxuehai_jiaer 2012-04-11  
1 楼 justin18 2010-08-19  
受教了~~

相关推荐

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

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

    sql 1=1和1=0的作用

    使用 where 1=1 的好处 不用where 1=1 在多条件查询中的困扰

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

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

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

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

    sql where 1=1的优缺点分析

    where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句

    SQL_where_1=1的用法

    此文档中详细记载了,SQL_where_1=1的用法,希望可以帮到下载的朋友们!

    深入理解where 1=1的用处

    where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。 select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1&lt;&gt;2,’a’=’a’,’a'&lt;&gt;’b’,其目的就只有一个...

    SQL WHERE 条件解析器

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

    SQL Where的简单判断

    SQL Where 简单判断

    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() }  调用...

    java定时执行sql语句

    delete from deviceInfo set ps=1 where status=0 &lt;&lt;-sql-&gt;&gt; update deviceInfo set ps=2 where status=2 程序启动类:dzw.Start.java 程序连接sqlserver用的是jtds,mysql和oracle的数据库连接驱动类请自行放到...

    ====sql调优============

    Oracle9i 简要SQL语句调整  SQL语句优化方法  优化目标  最佳实例  SQL语句优化技巧  使用EXISTS和IN

    sql语法的各种妙用

    sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用sql语法妙用...

    SQL一条语句统计记录总数及各状态数

    代码如下:SELECT SUM(正确数)+SUM(错误数) AS 总记录数,SUM(正确数),SUM(错误数) FROM ( SELECT COUNT(1) 正确数,0 错误数 FROM TB WHERE STATUS=1 UNION ALL SELECT 0 正确数,COUNT(1) 错误数 FROM TB WHERE ...

    SQL语句大全 实例

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

    海信商海导航SQL修改语句

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

    SQL常见命令及使用方法

    SQL 基本语句使用方法 sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" sql="select top 10 * from ...

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

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

Global site tag (gtag.js) - Google Analytics