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和 0=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; ...
- [转]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; ...
- Yii2.0中文开发向导——Where条件查询全解析
在Yii的Model里进行查询的时候 where是必不可少的.Where方法声明为 static where( $condition ) 其中参数 $condition类型为字符串或者数组 1.字符串 ...
- sql语句中where 1=1和 0=1 的作用
sql where 1=1和 0=1 的作用 where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where 1=1 在多条件查询中的 ...
- 【C#】SQL数据库助手类2.0(自用)
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- SQL防注入程序 v1.0
/// ***************C#版SQL防注入程序 v1.0************ /// *使用方法: /// 一.整站防注入(推荐) /// 在Global.asax.cs中查找App ...
- 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 ...
- nest exception is java.sql.SQLException:ORA-01476:除数为0
1.错误描述 nest exception is java.sql.SQLException:ORA-01476:除数为0 2.错误原因 3.解决办法
- 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 ...
随机推荐
- bayer转dng实现过程记录
前言 项目中需要将imx185出来的raw数据转成dng格式,一开始认为很简单的事情,后面才发现还是挺复杂的!!!首先考虑的是不写任何代码,直接用adobe提供的转换工具来转,结果发现,不仅是adob ...
- kernelchina.org内核研究
kernelchina.org 内核研究 转自:http://www.kernelchina.org
- textbox自动提示
AutoCompleteStringCollection myCutomSource = new AutoCompleteStringCollection(); myCutomS ...
- 原型 Boolean String Math Date知识点
原型 1.定义 每一个对象都有原型 原型仍然是一个对象 模拟实现面向对象的继承性 2.原型链 对象的原型还有原型 对象除了可以使用自有属性还可以继承原型上的属性 3.获取原型 对象.__proto__ ...
- 跨机房openvpn互联
实现目标:北京的client能访问上海的client (1)vpn server配置 1)基本配置 关闭selinux sed -ri '/^SELINUX=/cSELINUX=disabled' / ...
- (十四)基于GTID的主从复制
(1)GTID主从复制 1)环境介绍 /etc/redhat-release CentOS Linux release 7.3.1611 (Core) MySQL版本:5.7 mysql> se ...
- 在web项目下注册MySQL数据库驱动失败
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at org.apache.catalina.loader.WebappClassLoa ...
- (7)python 函数和lambda表达式
一.函数定义和调用 1.定义函数用def 2.函数注释 在函数体里的开头写上字符串,可以起到说明的作用 可以用函数名.__doc__的方式读取在函数开头加的字符串(双下划线) 内建的help()函数也 ...
- (1) Flutter android studio安装
Flutter由两部分组成 Flutter引擎和Flutter框架 Flutter引擎由C++编写,在android上通过NDK编译,在ios上通过llvm编译 Flutter框架由dart编写 1. ...
- ubantu对pycharm创建快捷方式
如果你刚开始没有建立快捷方式自己建立一个快捷方式,方法如下 终端输入:sudo gedit /usr/share/applications/Pycharm.desktop粘贴模板: [Desktop ...