`

【转】sql where 1=1和 0=1 的作用

 
阅读更多

http://www.cnblogs.com/junyuz/archive/2011/03/10/1979646.html

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

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

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

    总的来说,“where 1=1”虽然看起来简单,但在构建动态SQL查询和参数化查询时具有非常重要的作用。通过合理地利用这一技巧,可以有效地避免SQL语句构建过程中的常见错误,提高程序的健壮性和灵活性。同时,掌握Java...

    sql where 1=1的优缺点分析

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

    SQL_where_1=1的用法

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

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

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

    sql语句中where 1=1的作用

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

    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 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_...

    Mysql 行转列,列转行 SQL语句和示例表结构SQL

    MySQL 虽然没有内置的行转列和列转行函数,但通过 CASE、GROUP_CONCAT、UNION ALL 和 JOIN 等 SQL 语句,我们可以灵活地对数据进行转换,满足不同的数据分析需求。在实际应用中,应根据数据的特性和业务需求选择合适...

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

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

    PHPSHE 1.6 userbank sql注入1

    攻击者可以通过在输入框中输入恶意数据,例如 ' or 1=1 --',来注入恶意 SQL 语句,获取数据库敏感信息。 根据漏洞证明,可以看出该漏洞的影响范围非常广,攻击者可以通过该漏洞获取数据库中的各种敏感信息,例如...

    C#将Lambda表达式转成Sql语句

    总的来说,将C#的Lambda表达式转换为SQL语句是一项复杂但非常实用的任务,它使我们能够在不离开C#环境的情况下编写复杂的数据库查询,同时保持代码的清晰和简洁。这种技术对于开发高效、灵活的ORM(对象关系映射)...

    sql转access集锦

    4. **TOP子句**:SQL Server支持`SELECT TOP 1 * FROM table WHERE id=1`,但Access不支持TOP子句,需要通过其他方式实现相同的功能。 5. **当前日期和时间**:在SQL Server中,插入当前日期可以使用`addtime='now...

    php_sql.zip_Known_c php post_json文件转换_php 数组 转 sql

    将数组,HTML,XML或JSON文件转换为SQL语法。 使用 ======================== - SELECT *FROM myArray ORDER BY key DESC,value ASC, - SELECT key,value FROM myArray WHERE value= 100 , - SELECT * FROM json_...

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

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

Global site tag (gtag.js) - Google Analytics