转自:http://hi.baidu.com/nenggan123/blog/item/f9d17efad238b2106c22ebec.html
where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。
select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,12,'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;
分享到:
相关推荐
golang中规则引擎的一种查询语言类似于SQL中的where部分
where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。 select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,’a’=’a’,’a'<>’b’,其目的就只有一个...
方法1、使用语言的for语句循环生成SQL语句中的“?”,类似这样: 新建方法 func placeholders(n int) string { var b strings.Builder for i := 0; i 0 { b.WriteString("?") } return b.String() } 调用...
3. SQL语言对数据库对象的定义使用哪三个SQL命令关键字? Create,alter,drop。 4. 标准的SQL语言与实际数据库产品中的SQL数据库语言的关系? 绝大多数实际数据库产品并不完全支持标准SQL,SQL的某些功能在实际...
上面是对DDL语言操作的经典语句的集合。上面是对DDL语言操作的经典语句的集合。上面是对DDL语言操作的经典语句的集合。
详析SQL语言的WHERE子句与HAVING子句.pdf
关系数据库入门 详细的介绍了SQL语言 查询没有选修1号课程的学生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno='1');
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 ) 11、说明:四表联查问题: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c ...
在SQL查询中,一个SELECT-FROM-WHERE查询语句称为一个查询块;将一个查询块嵌入到另一个查询块的WHERE子句或HAVING子句中,称为嵌套子查询
各种sql实用例子 (1)数据记录筛选: ...sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式" (3)删除数据记录: sql="deletefrom数据表where条件表达式" sql="deletefrom数据
sql语言参考大全(光盘源码)书中的实例后台数据库采用了SQL Server 2000、SQL Server 2005、Oracle、MySQL、Access5种数据库。光盘包含了本书运行需要的光盘源程序文件(脚本)和光盘使用说明书。光盘源程序文件...
将NLP语言转为机器可以理解的SQL语言 模型的输入为一个 Question,输出一个 SQL 结构,该 SQL 结构对应一条 SQL 语句。 SQL结构 sel 为一个 list,代表 SELECT 语句所选取的列 agg 为一个 list,与 sel 一一对应...
EXCEL里使用SQL的方法(欢乐小爪原创) 急用EXCEL的SQL用法,抄来欢乐小爪几篇文章,支持原创,留下小爪印:http://hi.baidu.com/huanhuanxiaozhua/blog EXCEL(VBA)~SQL 经典写法范本汇集(一) 2007-12-10 21:20 ...
使用WHERE子句进行有条件的查询 使用IN,NOT IN,BETWEEN等谓词查询 利用LIKE子句实现模糊查询 利用ORDER子句为结果排序 用SQL Server的统计函数进行统计计算 用GR0UP BY子句实现分组查询的方法 连接...
10.3.3 在having子句中使用相关子查询 201 10.4 嵌套子查询 203 10.5 使用子查询创建视图 204 10.6 树查询 205 第11章 数据插入操作 209 11.1 插入单行记录 209 11.1.1 基本语法 209 11.1.2 整行插入 209 ...
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid ))) ...
更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串) 排序:select * from table1 order by field1,field2 ...
SQL语言的英文全称为structured packingQuery Language ,在SQL中,基本表的删除可用drop table table-name 语句,删除基本表中的所有元组可用delete [from] table-name where search-conditions语句。...
string sqlString = "select count(*) from Users where name='"+name+"' and pass='"+pass+"'"; object obj = SqlHelper.ExecuteScalar(SqlString,CommandType.Text, sqlString); if(obj!=null && obj.ToString...
1、 查询选修了课程的学生人数。 select count(distinct sno) 学生人数--distinct表示去掉重复行 from sc 2、 查询学生200515001选修课程的总学分数。 select sum(credit) from course,sc where sno = '200515001' ...