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

一、不用where  1=1  在多条件查询中的困扰

  举个样例,假设您做查询页面,而且。可查询的选项有多个,同一时候。还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体例如以下:

  string MySqlStr=”select * from table where”;

  if(Age.Text.Lenght>0)

  {

    MySqlStr=MySqlStr+“Age=“+“'Age.Text'“;

  }

  if(Address.Text.Lenght>0)

  {

    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;

  }

  ①种如果

  假设上述的两个IF推断语句。均为True,即用户都输入了查询词。那么,终于的MySqlStr动态构造语句变为:

  MySqlStr=”select * from table where Age='18'  and Address='云南省文山州广南县小波吗村'”

  可以看得出来。这是一条完整的正确的SQL查询语句,可以正确的被运行。并依据数据库是否存在记录。返回数据。

  ②种如果

  假设上述的两个IF推断语句不成立。那么。终于的MySqlStr动态构造语句变为:

  MySqlStr=”select * from table where“

  如今。我们来看一下这条语句,因为where关键词后面须要使用条件,可是这条语句根本就不存在条件。所以,该语句就是一条错误的语句,肯定不能被运行。不仅报错,同一时候还不会查询到不论什么数据。

  上述的两种如果,代表了现实的应用,说明,语句的构造存在问题,不足以应付灵活多变的查询条件。

  二、使用 where  1=1  的优点

  假如我们将上述的语句改为:

  string MySqlStr=”select * from table where  1=1 ”;

  if(Age.Text.Lenght>0)

  {

    MySqlStr=MySqlStr+“and Age=“+“'Age.Text'“;

  }

  if(Address.Text.Lenght>0)

  {

    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;

  }

  如今,也存在两种如果

  ①种如果

  假设两个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;
 创建一个新表,而新表的结构与查询的表的结构是一样的。

最新文章

  1. 阿里云分布式关系数据库DRDS笔记
  2. 个人记录比较好的css样式
  3. 创建动态WCF服务(无配置文件)
  4. Node.js入门:Node.js&NPM的安装与配置
  5. HDU Machine scheduling
  6. 【原】训练自己haar-like特征分类器并识别物体(1)
  7. Windows Self Signed Driver
  8. 【Java/Android性能优化1】Android性能调优
  9. python常用字符串操作
  10. Linux软连接和硬链接(摘录)
  11. 原生Javascript插件开发实践
  12. ZOJ 3635 Cinema in Akiba(线段树)
  13. nohup及/dev/null使用
  14. (转载)一个生动的NIO描述
  15. Lucene工作原理
  16. 亚马逊AWS学习——VPC里面几个概念的关系
  17. No bean named 'dataSource' is defined
  18. Android为TV端助力 MVP设计模式!
  19. MySQL利用binlog恢复误操作数据(python脚本)
  20. Android Studio Intent使用(显式、隐式)

热门文章

  1. JAVA 开发工具 市场状况
  2. Bash Shell 下打开一个TCP / UDP SOCKET
  3. iOS设计模式 —— KVC
  4. servlet(1) - 手写第一个servlet程序 - 小易Java笔记
  5. SQL Server数据库优化笔记
  6. 细说robots.txt
  7. cmake 查找头文件和库文件顺序
  8. NumPy、SciPy 等Python包在Windows下的whl安装包下载
  9. 微信token
  10. 实现用http上传文件,用ftp下载文件