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

一、不用where 1=1 在多条件查询中的困扰
举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下:
①种假设
如果上述的两个IF判断语句,均为True,即用户都输入了查询词,那么,最终的MySqlStr动态构造语句变为:
MySqlStr=”select * from table where Age='18' and Address='云南省文山州广南县小波吗村'”
可以看得出来,这是一条完整的正确的SQL查询语句,能够正确的被执行,并根据数据库是否存在记录,返回数据。
②种假设
如果上述的两个IF判断语句不成立,那么,最终的MySqlStr动态构造语句变为:
MySqlStr=”select * from table where“
现在,我们来看一下这条语句,由于where关键词后面需要使用条件,但是这条语句根本就不存在条件,所以,该语句就是一条错误的语句,肯定不能被执行,不仅报错,同时还不会查询到任何数据。
上述的两种假设,代表了现实的应用,说明,语句的构造存在问题,不足以应付灵活多变的查询条件。
二、使用 where 1=1 的好处
假如我们将上述的语句改为:
现在,也存在两种假设
①种假设
如果两个IF都成立,那么,语句变为:
MySqlStr=”select * from table where 1=1 and Age='18' and Address='云南省文山州广南县小波吗村'”,很明显,该语句是一条正确的语句,能够正确执行,如果数据库有记录,肯定会被查询到。
②种假设
如果两个IF都不成立,那么,语句变为:
MySqlStr=”select * from table where 1=1”,现在,我们来看这条语句,由于where 1=1 是为True的语句,因此,该条语句语法正确,能够被正确执行,它的作用相当于:MySqlStr=”select * from table”,即返回表中所有数据。
言下之意就是:如果用户在多条件查询页面中,不选择任何字段、不输入任何关键词,那么,必将返回表中所有数据;如果用户在页面中,选择了部分字段并且输入了部分查询关键词,那么,就按用户设置的条件进行查询。
说到这里,不知道您是否已明白,其实,where 1=1的应用,不是什么高级的应用,也不是所谓的智能化的构造,仅仅只是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态SQL语句的一种方法。
where 1=0; 这个条件始终为false,结果不会返回任何数据,只有表结构,可用于快速建表
"SELECT * FROM strName WHERE 1 = 0"; 该select语句主要用于读取表的结构而不考虑表中的数据,这样节省了内存,因为可以不用保存结果集。
create table newtable as select * from oldtable where 1=0; 创建一个新表,而新表的结构与查询的表的结构是一样的。
原文链接:http://www.2cto.com/database/201412/357377.html
可以参考:http://blog.163.com/mao_xiao_jian/blog/static/740559322010184260488/

where 1=1和 0=1 的作用相关推荐

  1. iOS 8 UITableView分隔符插入0不起作用

    本文翻译自:iOS 8 UITableView separator inset 0 not working I have an app where the UITableView 's separat ...

  2. sql 语句中 Sum(*) Nvl(name,0) Coun(*)的作用

    SUM(name)D的作用就是计算当前列名字为name所有字段的和 NVL(name,0)的作用相当于判空语句,if为空则取后面的0 为值,若不为空取本身的值 COUNT(NAME)  对符合条件的数 ...

  3. 模拟地与数字地连接0欧电阻作用

    1.模拟地和数字地单点接地 只要是地,最终都要接到一起,然后入大地.如果不接在一起就是"浮地",存在压差,容易积累电荷,造成静电.地是参考0电位,所有电压都是参考地得出的,地的标准 ...

  4. select 统计 没有 为0_sql where 1=1和 0=1 的作用

    where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 1. 不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项 ...

  5. setTimeout延时0毫秒的作用

    经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用 1.实现javascript的异步: 正常情 ...

  6. sql where 1=1和 0=1 的作用

    where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选 ...

  7. css中margin:0 auto没作用

    很多初学制作网页的朋友,可能会遇到的一个常见问题,就是在CSS中加了margin:0 auto;却没有效果,不能居中的问题!margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应!其 ...

  8. Linux系统中的kill -0有什么作用?

    上周组内技术分享中,有朋友提到了Linux下的kill -0的使用,以前确实没太注意过,这个命令还是有一定作用的. 我们看下man中对kill -0的说明,如果参数是0,不会发送任何的信号,但是仍会执 ...

  9. php 环回地址,环回地址(127.0.0.1)的作用

    在这里可能有人会质疑:不用环回地址可不可以?答案是肯定的,用主机某个网络接口的ip 就可以代替这个环回地址.那这里为什么还要强调这个环回地址呢?主要的原因是方便和稳定.网络接口的地址可能因为某种原因被 ...

最新文章

  1. 计算机在中职教育中的运用论文,中职计算机教育的相关论文(2)
  2. python 装饰器中的@wraps
  3. 数据结构 python的书推荐-为什么程序员一定要学数据结构?数据结构书单推荐~...
  4. 笔记本电脑触摸板怎么开_更多的笔记本电脑向你袭来!
  5. bat遍历当前目录下的文件,批量重命名
  6. python2.7安装tensorflowgpu_Ubuntu16.04+Python2.7+CUDA9.0+cuDNN7.0+TensorFlow 1.6 安装随笔
  7. 【双指针】Square Pasture G(P7153)
  8. Leetcode--820:单词的压缩编码(java)
  9. 树莓派摄像头基础配置及测试
  10. Web前端文档阅读笔记-vis.js动态添加节点(vue cli环境)
  11. 服务器重装系统u盘启动不了怎么办,重装系统时BIOS不识别U盘启动盘怎么办
  12. WES7创建系统恢复盘
  13. Windbg 命令 (一)
  14. 360浏览器打不开微信的连接服务器,360浏览器打不开网页怎么办-解决360浏览器打不开网页的方法 - 河东软件园...
  15. 欧拉函数、费马定理、欧拉定理
  16. 针对Informer中时序数据ETT油温数据分析
  17. mac系统安装Anaconda后再打开终端自动进入Anaconda环境
  18. 【无人机】基于matlab粒子群算法优化干扰受限下无人机群辅助网络【含Matlab源码 2245期】
  19. 运行Intel realsense L515相机
  20. 记一次jin开发遇到的很欲哭无泪的报错

热门文章

  1. GC垃圾回收的三色标记算法
  2. 如何解决在onCreate()中获取View的width和Height为0?
  3. Codeforces Edu Round 64 A-D
  4. Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明
  5. 一些常见http状态码
  6. 2012年度IT博客大赛10强花落谁家暨圆满落幕
  7. ActiveMQ相关概念
  8. Arts 第十八周(7/15 ~ 7/21)
  9. 洛谷P2995奇数偶数
  10. python编程:从入门到实践--项目1-外星人入侵_学习笔记_源码