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

sql where 1=1和 0=1 的作用(多条件查询错误的问题)的更多相关文章

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

    sql where 1=1和 0=1 的作用 摘自: http://www.cnblogs.com/junyuz/archive/2011/03/10/1979646.html where 1=1; ...

  2. [转]sql where 1=1和 0=1 的作用

    sql where 1=1和 0=1 的作用 原文地址:http://www.cnblogs.com/junyuz/archive/2011/03/10/1979646.html where 1=1; ...

  3. Yii2.0中文开发向导——Where条件查询全解析

    在Yii的Model里进行查询的时候 where是必不可少的.Where方法声明为 static where( $condition ) 其中参数 $condition类型为字符串或者数组 1.字符串 ...

  4. sql语句中where 1=1和 0=1 的作用

    sql where 1=1和 0=1 的作用   where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的 ...

  5. 【C#】SQL数据库助手类2.0(自用)

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  6. SQL防注入程序 v1.0

    /// ***************C#版SQL防注入程序 v1.0************ /// *使用方法: /// 一.整站防注入(推荐) /// 在Global.asax.cs中查找App ...

  7. Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程

    原文:Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程 Red Gate系列之四 SQL Data Compare ...

  8. nest exception is java.sql.SQLException:ORA-01476:除数为0

    1.错误描述 nest exception is java.sql.SQLException:ORA-01476:除数为0 2.错误原因 3.解决办法

  9. Error after SQL Server 2012 installation: Login Failure for "SQL Server Integration Services 11.0" SSIS service

    When you install SQL Server 2012 and you try to connect to SSIS services, you cannot due to that the ...

随机推荐

  1. 大话Linux内核中锁机制之原子操作、自旋锁【转】

    转自:http://blog.sina.com.cn/s/blog_6d7fa49b01014q7p.html 多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实 ...

  2. Tomcat下载安装及常见问题解决办法

    一.Tomcat的下载: 下载地址:http://tomcat.apache.org/ 下载Tomcat6.0(在左侧的Download下,考虑到稳定性现在企业大部分还在用Tomcat6.0) (1) ...

  3. 新版谷歌浏览器设置flash插件不提示步骤

    1.先去chrome实验室界面chrome://flags/#enable-ephemeral-flash-permission选择取消Disabled.取消该实验室选项. 2.然后去chrome:/ ...

  4. django日志的设置

    关于django的日志设置详细可以看下官方文档:https://yiyibooks.cn/xx/Django_1.11.6/topics/logging.html 示例: # 日志文件配置 LOGGI ...

  5. CSS中的HSLA颜色

    CSS 中的颜色可以由RGB色彩空间和HSL色彩空间两种方式来表述.其中我们常用的是RGB色彩空间,RGB色彩空间的颜色表示方式有:十六进制颜色(如红色:#FF0000).RGB颜色(如红色:rgb( ...

  6. ubuntu下使用mysql的一点笔记

    因为使用的是apt-get安装的.所以,mysql的安装路径在/var/lib/mysql下面 在普通用户下,cd /var/lib/mysql,居然提示: bash:cd:mysql Permiss ...

  7. Qt笔记——Event

    #ifndef MYBUTTON_H #define MYBUTTON_H #include <QPushButton> class MyButton : public QPushButt ...

  8. Android 网络url设置View背景图

    imgstr为url网络图片地址,topllay是要设置背景的控件: 方法1.Android Glide设置View背景图 Glide.with(this).load(imgStr).asBitmap ...

  9. MYSQL的内外连接

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...

  10. Vue 不使用Vuex的情况下进行状态管理

    在封装自己的Vue ui库的时候,往往要封装一些比较复杂的组件,比如说table,form之类.这些组件由于功能繁杂,还涉及到子组件嵌套及通信,如果没有一套状态管理方案的话很容易导致代码难以阅读.难以 ...