`
yipbxx
  • 浏览: 57798 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

where 1=1 和 0=1

    博客分类:
  • DB
阅读更多

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;  
分享到:
评论

相关推荐

    where 1=1和 0=1

    开发人员和数据管理员需明白的,where 1=1和 0=1的作用

    sql中where 1=1 与1=0的作用1

    ②种假设 如果两个IF都不成立,那么,语句变为: MySqlStr=”select * from table where 1=1”,现在,我们来看这条语句,

    sql 1=1和1=0的作用

    使用 where 1=1 的好处 不用where 1=1 在多条件查询中的困扰

    sql where 1=1的优缺点分析

    一、不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: 代码如下: ...

    海信商海导航SQL修改语句

    where canstore='0' delete xvipdb..viptopos where canstore='0' /* 修改上次结帐日期*/ update SysDB..Syscfg set ItemValue='2007-04-10 1' where ItemName='OVERSTATUS' update VipDB..Syscfg set Item...

    游标嵌套 STATUS 异常 存储过程

    1,异常处理,事务回滚。 2,错误消息返回。 3,游标嵌套。 4,对于嵌套游标STATUS的互相影响问题的解决办法《注意001和002的注释位置,fetch的位置》。 对于初学者,存储过程重要的几个方面,都有展示到,大虾们请...

    网狐实物点卡生成(带数据库脚本和存储过程)

    --update QPGameUserDB.dbo.AccountsInfo set UserRight=0 Where UserID=@userid INSERT INTO [PostLog]([PostCode],[PassWord],[UserID],[price],[PostDate],[IsCrad]) VALUES (@cardcode,@cardpass,@...

    SQL一条语句统计记录总数及各状态数

    代码如下:SELECT SUM(正确数)+SUM(错误数) AS 总记录数,SUM(正确数),SUM(错误数) FROM ( SELECT COUNT(1) 正确数,0 错误数 FROM TB WHERE STATUS=1 UNION ALL SELECT 0 正确数,COUNT(1) 错误数 FROM TB WHERE ...

    [详细完整版]4数据库.docx

    4数据库 编号 页数 例题 题目 语句 1 77 例4-9 检索供应零件给编号J1的工程的供应商编号SNO SETLEC DISTINCT SNO FROM SPJ WHERE JNO='J1' 2 77 例4-9 检索供应零件给工程J1,且零件编号为P1的供应商编号SNO SELECT ...

    查询记录功能,从access数据库中读取,Adodc1.RecordSource = &quot;select * from 订单表 where 订

    查询记录功能,从access数据库中读取,Adodc1.RecordSource = "select * from 订单表 where 订 单号='" + Text1(0).Text + "'" Adodc1.Refresh(VB6.0源代码编写)

    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() }  调用...

    数据库实验报告:实验五.doc

    数学系所有学生成绩改成0 update student set Sage=0 where Sdept='ma'; 把低于总平均成绩的女同学成绩提高5分 update sc set Grade=Grade+5 where grade&lt;(select avg(grade) from sc)and sno in(select sno from ...

    SQLSERVER对加密的存储过程、视图、触发器进行解密(推荐)

    加密测试的存储过程 ...IF(SELECT COUNT(1) FROM Custs WHERE NAME=@USERNAME)&gt;0 SET @MSG='\u6b64\u7528\u6237\u540d\u5b58\u5728' ELSE SET @MSG='\u6b64\u7528\u6237\u540d\u4e0d\u5b58\u5728' EN

    mySql优化方法简单≈易学

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。  2.应尽量避免在 where 子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。  3.应尽量避免在 where ...

    利用SQL查询删除所有表及储过程

    while(@@fetch_status=0) begin exec&#40;@c1&#41; fetch next from c1 into @c1 end close c1 deallocate c1 --删除表 DECLARE c2 cursor for select 'drop table ['+name +']; ' from sysobjects where...

    sql手注笔记.docx

    id=1' and 1=(select 1 from information_schema.tables where table_schema='security' and table_name regexp '^[a-z]' limit 0,1)--+ 联合注入 id=-1 ' union select 1,schema_name,3 from informaiton_...

    sql添加表列字段描述添加默认值删除字段

    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'先用项目结项数' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'jsc_financial', @level2type=N'COLUMN',@...

    经典SQL语句大全

    “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere end else begin set @strSQL = '...

    数据库上机试验-屏蔽敏感词汇的代码

    GETDATE()))+'_'+Convert(Varchar(4),RIGHT(RAND(DATEPART(MS,GETDATE())*1000),4)),1,2,1,1,'BUY USC','20/20/10 USC,30.5IST.....','2005-7-13',0,1,'2005-7-13 14:21:2') UPDATE BBSUsers SET UPoint = UPoint +...

    sql游标实例,更新行

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tmp_Last]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[tmp_Last] CREATE TABLE [tmp_Last] ( [FEntryID] [int] ...

Global site tag (gtag.js) - Google Analytics