`

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

阅读更多

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 与1=0的作用1

    在SQL查询中,`WHERE 1=1`和`WHERE 1=0`是两种特殊用法,它们在构建动态查询语句时起到关键作用。本文将详细解释这两种条件语句的作用及其应用场景。 首先,`WHERE 1=1`是一个恒为真的条件,无论何时,这个表达式都...

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

    在探讨“where 1=1”这一SQL语句的含义之前,我们首先需要理解SQL(Structured Query Language,结构化查询语言)的基本概念及其在数据库操作中的作用。SQL是一种用于管理关系型数据库的标准语言,它被广泛应用于...

    sql 1=1和1=0的作用

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

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

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

    SQL_where_1=1的用法

    除了作为动态SQL构建的一部分外,`WHERE 1=1` 和 `WHERE 1=0` 也有其他用途: 1. **WHERE 1=0**: - 这个条件始终为假,因此不会返回任何数据。它可以用于某些特殊场合,比如快速创建表结构而不获取数据: ```sql...

    sql语句中where 1=1的作用

    在SQL查询中,`WHERE 1=1` 是一个经常被使用的技巧,尤其是在构建动态或者可扩展的SQL语句时。这个表达式看起来似乎没有实际的过滤作用,因为`1`总是等于`1`,但它在多种场景下具有重要的意义。 首先,`WHERE 1=1` ...

    sql where 1=1的优缺点分析

    总结来说,`WHERE 1=1`和`WHERE 1=0`是SQL查询中的实用技巧,它们分别帮助构建动态查询并处理没有数据的情况。在处理可变条件的查询时,使用`WHERE 1=1`能确保语法正确性,而`WHERE 1=0`则常用于获取表结构或创建空...

    SQL WHERE 条件解析器

    总结来说,`SQL WHERE 条件解析器`是数据库应用开发中的一个重要辅助工具,它能帮助开发者有效地处理和构建复杂的查询条件,提高代码的可读性和可维护性。在列表控件等场景中,它简化了动态SQL生成的过程,使得数据...

    深入理解where 1=1的用处

    在SQL注入时会用到这个,例如select * from table1 where name=’lala’给强行加上select * from table1 where name=’lala’ or 1=1这就又变成了无约束的查询了。 最近发现的妙用在于,在不定数量查询

    Sql Server参数化查询之where in和like实现详解

    Sql Server参数化查询之where in和like实现详解 在Sql Server中,参数化查询是提高查询性能和防止SQL注入攻击的有效方法之一。其中,where in和like是两个常用的查询条件,然而它们的参数化实现却不是那么简单。...

    SQL Where的简单判断

    在探讨“SQL Where的简单判断”这一主题时,我们首先需要理解SQL(Structured Query Language,结构化查询语言)的基本概念及其在数据管理与检索中的应用。SQL是一种用于处理关系数据库的标准语言,它允许用户创建、...

    sql添加表列字段描述添加默认值删除字段

    sql添加表列字段描述添加默认值删除字段 //删除表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[JHCRM_Report_ss]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [JHCRM_...

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

    sqlserver的存储过程与 where in 多值参数

    在SQL Server中,存储过程是预编译的SQL语句集合,它们封装了特定的数据库操作,提高了代码的重用性和执行效率。当涉及到处理多个值时,我们常常会遇到如何将这些值作为参数传递给存储过程的问题。本文将探讨在SQL ...

    java定时执行sql语句

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

    页面传入多个条件——sql语句的拼接

    这里初始化SQL语句为“select * from book where 1=1”,其中`where 1=1`是一个常见的技巧,用于确保后续添加的条件之前总能有`WHERE`或`AND`关键字。 2. **根据条件拼接SQL语句**: - **bookID条件**: ```...

    Delphi中sql语句的使用总结

    本文将详细介绍如何在Delphi环境中构造和执行SQL查询,并给出具体的示例来帮助理解。 #### 一、基本SQL查询的构建 在Delphi中,通过`TADOQuery`组件来构建并执行SQL查询是最常见的方法之一。下面我们将通过几个...

    MYSQL where 1=1判定中的作用说明

    在SQL查询中,`WHERE 1=1` 这个表达式看似无用,但实际上它在某些场景下具有重要的作用。下面将详细解释这个表达式的用途及其背后的逻辑。 首先,我们要明白`1=1`是一个永真的逻辑表达式,这意味着无论何时评估,它...

Global site tag (gtag.js) - Google Analytics