`

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

阅读更多
where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。

select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,'a'='a','a'<>'b',其目的就只有一个,where的条件为永真,得到的结果就是未加约束条件的。

在SQL注入时会用到这个,例如select * from table1 where name='lala'给强行加上select * from table1 where name='lala' or 1=1这就又变成了无约束的查询了。

最近发现的妙用在于,在不定数量查询条件情况下,1=1可以很方便的规范语句。例如一个查询可能有name,age,height,weight约束,也可能没有,那该如何处理呢?

String sql=select * from table1 where 1=1

为什么要写多余的1=1?马上就知道了。

if(!name.equals("")){
sql=sql+"name='"+name+"'";
}
if(!age.equals("")){
sql=sql+"age'"+age+"'";
}
if(!height.equals("")){
sql=sql+"height='"+height+"'";
}
if(!weight.equals("")){
sql=sql+"weight='"+weight+"'";
}

如果不写1=1呢,那么在每一个不为空的查询条件面前,都必须判断有没有where字句,否则要在第一个出现的地方加where


有一次在论坛里看到:"SELECT * FROM strName WHERE 1 = 0";
不理解为什么有1=0?

该select语句主要用于读取表的结构而不考虑表中的数据,这样节省了内存,因为可以不用保存结果集。

另外,这个用在什么地方呢?主要用于创建一个新表,而新表的结构与查询的表的结构是一样的。如下SQL语句:

create table newtable as select * from oldtable where 1=0;


本文来自:http://blog.csdn.net/wh62592855/archive/2009/11/15/4813909.aspx
分享到:
评论

相关推荐

    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的优缺点分析

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

    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 Server参数化查询之where in和like实现详解

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

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

    SQL Where的简单判断

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

    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 &lt;&lt;-sql-&gt;&gt; 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