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 ...
随机推荐
- 嵌入式上 iscsi实现
前言 去年公司设备(haisi3516)上需要提供iscsi的功能,于是花了几天时间探究了下.linux内核(2.6.xx)支持iscsi,只是我发现当时我们设备的内核编译时没有选上,于是重新编译了内 ...
- Spring boot 文件路径读取异常
在开发代码中,有一段需要获取resources目录下的一个配置文件(这里写作test.xml). 这段代码在ide中没有任何问题,但是一打成jar包发布到线上,这段代码就会报找不到对应文件的错误. 按 ...
- 区块链开发(七)truffle使用入门汇总
截止上篇博客,以太坊区块链开发的环境和框架基本上搭建完毕.这一篇博客重点梳理一下基本的流程和操作演示. 前奏 基于前面的安装配置,现在重新梳理一遍,以前博客讲到的就在这里一笔带过. (1)创建一个工作 ...
- 使用 gulp 压缩 JS
使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 压缩 js 代码可降低 js 文件大小,提高页面打开速度.在不利用 gulp 时我们需要通过各种工具手动完成 ...
- 【转】持续集成 Sonar 平台搭建及 Sonar 自定义规则打包部署篇
引言 基于阿里开发手册的sonar自定义插件工程 开源地址: https://github.com/tigerge000/sonar-java-custom-rules.git由于最近来问童鞋,就算写 ...
- codeforces 869A The Artful Expedient【暴力枚举/亦或性质】
A. time limit per test 1 second memory limit per test 256 megabytes input standard input output stan ...
- Python与数据结构[4] -> 散列表[1] -> 分离链接法的 Python 实现
分离链接法 / Separate Chain Hashing 前面完成了一个基本散列表的实现,但是还存在一个问题,当散列表插入元素冲突时,散列表将返回异常,这一问题的解决方式之一为使用链表进行元素的存 ...
- hdu6041
hdu6041 题意 给出一个仙人掌. 如果一个无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌.所谓简单环即不经过重复的结点的环. 求前 \(K\) 小生成树 . 分析 仙人掌中每个环中 ...
- 数学结论【p1463】[POI2002][HAOI2007]反素数
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数 ...
- [ARC100]E:Or Plus Max(FZT)
https://arc100.contest.atcoder.jp/tasks/arc100_c 一个很自然的想法是,对于每个K求出i or j=k的所有a[i]+a[j]的最大值ans[k],答案就 ...