- 浏览: 578122 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (411)
- webservice (3)
- oracle (37)
- sqlserver (8)
- j2ee (56)
- linux (7)
- javaweb (47)
- office (1)
- struts (23)
- hibernate (11)
- spring (29)
- 网络 (2)
- tomcat (13)
- tongweb (0)
- weblogic (0)
- powerdesiginer (3)
- svn (3)
- js (20)
- ie (2)
- 编译 (3)
- css (2)
- 操作系统 (5)
- Android (41)
- jbpm4.3 (1)
- fckeditor (3)
- 操作excel (2)
- db2常用命令 (1)
- ibatis (5)
- mysql (16)
- 表达式语言 (1)
- java方式调用存储过程 (1)
- ca (1)
- linux客户端 (1)
- 电子数码 (1)
- 行业应用 (12)
- 开发工具 (4)
- 面试 (1)
- 计算机原理 (1)
- NOSQL (5)
- 虚拟机 (1)
- nginx (0)
- velocity (2)
- jndi (1)
- spring mvc (39)
- springmvc (32)
- 安全 (5)
- htmleditor (6)
- iphone4 (1)
- html (4)
- jstl (2)
- ckeditor (5)
- 连接池 (1)
- jquery (6)
- 分页 (1)
- 技术研发规则 (1)
- javamail (1)
- maven (2)
- upload (1)
- log (1)
- 测试 (10)
- spring roo (1)
- 版本控制 (2)
- find bugs (0)
- jsf (0)
- springroo (0)
- 小道理 (1)
- 小道理,技术标准 (1)
- jsf (0)
- bitbao (2)
- redmine (3)
- 团队意识 (1)
- mybatis (2)
- jquery mobile (1)
- flexpaper (0)
- json (4)
- URLRewriteFilte (1)
- html5 (1)
- 都乐保活动 (0)
- openfire (0)
- TreeMap (1)
- build (0)
- javaweb,tag (0)
- algorithm (1)
- tag (2)
- 扯淡 (0)
- mac (2)
- 叶一火(老一) (1)
- 游玩 (1)
- 编码 (1)
- 上线部署 (0)
- 研发管理 (0)
- thumbnailator (2)
- 旅游 (0)
- bingweibo (1)
- 杂谈 (4)
- ktv (1)
- weibo (1)
- 爱情 (2)
- 饮食 (1)
- MediaWiki (1)
- git (1)
- 版本库 (1)
- servlet (1)
- 感悟 (1)
- 人生 (1)
- highcharts (1)
- poi (0)
- websphere (0)
- php (1)
最新评论
-
woshixushigang:
good
org.springframework.beans.TypeMismatchException: Failed to convert property valu -
nathanleewei:
org.springframework.jdbc.core.B ...
org.springframework.beans.TypeMismatchException: Failed to convert property valu -
浪禾木:
请问是ckeditor\contents.css吗?改过以后 ...
ckeditor自动换行问题 -
simusuishi:
刚哥威武!
ckeditor取值赋值问题 -
a455642158:
收割完毕……
Android开源项目源码下载(不断更新中)
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查询不同用户下得表
2013-03-08 10:26 0查询当前用户的表 SELECT table_nam ... -
事务开始和结束
2011-08-19 19:13 1123《Oracle Database 11g SQL开 ... -
事务的隔离级别
2011-08-19 00:06 658如果DBMS支持事务处理 ... -
事物隔离级别
2011-08-19 00:03 1214事物隔离级别(转 ... -
case when和decode
2011-08-16 18:15 965Oracle的DECODE函数功能很强,灵活运用的话可以避免多 ... -
创建存储过程
2011-08-10 22:29 720--创建存储过程 CREATE OR REPLACE PRO ... -
Oracle字符集
2011-07-22 22:06 978一、什么是Oracle字符集 Oracle字 ... -
sequence和trigger引发的低级错误
2011-07-22 16:55 1074本人做国家林业局政法司项目时候遇到了一个低级的错误:新 ... -
connect by prior start with
2011-07-21 16:46 941connect by prior start with ... -
oracle级联查询当前地区的子地区
2011-07-20 11:11 941select id from AREA connect by ... -
java.sql.SQLException: 无法转换为内部表示
2011-07-20 10:19 2734项目中因某种需求,在程序中操作数据的SQL加行级锁,避免出 ... -
往表插入其他表数据
2011-07-19 15:48 830insert into future.news(a,b,c) ... -
java.sql.SQLException: 类型长度大于最大值 原因
2011-07-19 14:04 1247可能是驱动问题,换成ojdbc16.jar。 或者是检 ... -
String[] args = new String[]{sql.toString()}
2011-06-29 16:12 1136本题中 StringBuffer sql = new Stri ... -
to_date
2011-06-29 15:25 1432TO_DATE格式(以时间:2007-11 ... -
获取数据库当前时间
2011-06-22 10:35 1311例如有表table,table 中有两个字段:name 、 ... -
统计oracle 数据库 lawpeople表lawtype字段多个值只统计一次问题,按照地区分类
2011-06-10 15:57 1246select temparea.name,(case whe ... -
telephone页面传值到struts2模型驱动中报错
2011-05-22 19:42 1270- Error setting expression 'res ... -
批量插入数据效率问题
2011-05-21 22:04 1344大家都知道,招聘系统 ... -
oracle根据id查询数据时候in后面数目不能超过1000但是or可以
2011-05-04 15:13 1241select * from table where id i ...
相关推荐
在SQL查询中,`WHERE 1=1`和`WHERE 1=0`是两种特殊用法,它们在构建动态查询语句时起到关键作用。本文将详细解释这两种条件语句的作用及其应用场景。 首先,`WHERE 1=1`是一个恒为真的条件,无论何时,这个表达式都...
除了作为动态SQL构建的一部分外,`WHERE 1=1` 和 `WHERE 1=0` 也有其他用途: 1. **WHERE 1=0**: - 这个条件始终为假,因此不会返回任何数据。它可以用于某些特殊场合,比如快速创建表结构而不获取数据: ```sql...
### 1. 异常处理与事务回滚 在数据库编程中,异常处理是非常重要的一个环节,它可以帮助开发者更好地控制程序的流程,并确保数据的一致性和完整性。在这个示例中,通过使用`TRY...BEGIN TRANSACTION...CATCH`结构来...
WHERE salary > (CASE WHEN AVG(salary) IS NOT NULL THEN AVG(salary) ELSE 0 END); ``` 在这个例子中,`CASE WHEN`语句检查平均薪资是否为`NULL`,如果不是,则使用平均薪资作为比较值;如果是`NULL`,则使用0。 ...
在数据库管理中,修改表名是一项常见的操作,尤其是在进行系统升级、数据迁移或者重构时。本文将详细讲解如何使用SQL命令来更改数据库中的表名,以及如何批量修改表名前缀,以适应不同的应用场景。 首先,我们需要...
例如,`WHERE 0=0 AND column1='y'`会被简化为`WHERE column1='y'`,或者`WHERE (0=1 AND s1=5) OR s1=7`会被优化为`WHERE s1=7`。在某些情况下,如果WHERE子句始终为FALSE,整个子句可能会被去除。不过,如果列被...
物品或者装入背包,或者不装入背包,称之为0/1被包问题 假设xi表示物品i被装入背包的情况,xi = 1表示物品装入背包,xi = 0表示物品没装入背包,根据题目要求,有下列约束函数 SUM(wi*xi) <= C,bestp = MAX(pi*xi) ...
问题描述:给定一个容量为C的背包及n个重量为wi,价值 ...SUM(wi*xi) <= C,bestp = MAX(pi*xi) where 0 <= i 解决方法:0/1背包问题有多种解决方法,本实验用动态规 划,回溯,分支界限三种方法进行解题
1. **避免无意义的查询**:不要编写如`SELECT col1, col2 INTO #t FROM t WHERE 1=0`这样的查询,它们虽然不返回结果,但会消耗系统资源。应直接使用`CREATE TABLE #t(...)`来创建空表。 2. **使用EXISTS替代IN**:...
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的数据库连接驱动类请自行放到...
3. 为什么 between 1 and 10 或者 between 0 and 10 能查到结果,而用 between 2 and 10 却得不到结果 原因同上一样,因为 rownum 总是从 1 开始 从上可以看出,任何时候想把 rownum = 1 这条记录抛弃是不对的,...
查询语句是`SELECT JNo FROM Supplies GROUP BY JNo HAVING COUNT(*) = 0 OR MAX(CASE WHEN Suppliers.City = '天津' THEN 1 ELSE 0 END) = 0`,这里使用了GROUP BY和HAVING子句。 - (8) 把全部绿色零件的颜色改为...
DELETE FROM xxx WHERE CHARINDEX(',' + CAST(id AS VARCHAR) + ',', ',' + @idList + ',') > 0 END ``` 这个方法适用于ID为数字的情况。如果ID可能包含非数字字符,记得使用`RTRIM`去除尾部空格。 **方法三:...
0 => '1=1', ]; ``` 调用`get_where($conditions)`会生成如下WHERE子句: ```sql id = 123 and name = 'John Doe' and status in ('active', 'pending') and 1=1 ``` 这个WHERE子句可以与SQL查询的其余部分结合...
UPDATE Grades SET Gmark = 0 WHERE Sno IN (SELECT Sno FROM Student WHERE Clno = '01311') DELETE FROM Grade WHERE Sno IN (SELECT Sno FROM Student WHERE Clno IN ...) DELETE FROM Student WHERE Sname = ...
- `SELECT * FROM user WHERE id=1 UNION ALL SELECT * FROM user WHERE salary=5000` 或者 - `SELECT * FROM user WHERE id=1; SELECT * FROM user WHERE salary=5000` 3. **使用数值类型替换字符串类型** ...
return TSQLServer.ExecDr("select * from [tb] where id = @1", values); } 2.返回一个DataTable数据集合调用如下: public static DataTable GetTable(object[] s = null) { return TSQLServer.ExecDt(...
(SELECT COUNT(1) FROM tableA WHERE orderStatus = 0) AS 'A', (SELECT COUNT(1) FROM tableB WHERE orderStatus = 1) AS 'B', (SELECT COUNT(1) FROM tableC WHERE orderStatus = 2) AS 'C' ``` 为了进一步...
delete from stuview1 where Sclass='0' 知识点7:视图的应用 视图可以应用于各种场景,例如数据分析、数据报表、数据安全等。例如: create view stuview3 as select Student.Sno,Cno,Grade from Sc,Student where...