Oracle之where1=1的⽤法
Oracle之where 1=1的⽤法
⾸先,强调⼀下这是⼀种江湖⽤法。
我们先来看看这个语句的结果:select from table where 1=1,其中where 1=1,由于1=1永远是成⽴的,返回TRUE,条件为真;所以,这条语句,就相当于select from table,返回查询表中的所有数据。
⼀、不⽤where 1=1 在多条件查询中的困扰
举个例⼦,如果您做查询页⾯,并且,可查询的选项有多个,同时,还让⽤户⾃⾏选择并输⼊查询关键词,那么,按平时的查询语句的动态构造,代码⼤ 体如下:
oracle之where 1=1的⽤法二郎神活了多少岁
①种假设
如果上述的两个IF判断语句,均为True,即⽤户都输⼊了查询词,那么,最终的MySqlStr动态构造语句变为:
python简单for循环
MySqlStr=”select * from table where Age=’18′ and Address=’XXXXXX’”
可以看得出来,这是⼀条完整的正确的SQL查询语句,能够正确的被执⾏,并根据数据库是否存在记录,返回数据。mysql语句转oracle
②种假设
如果上述的两个IF判断语句不成⽴,那么,最终的MySqlStr动态构造语句变为:
MySqlStr=”select * from table where“商城官方源码购买
现在,我们来看⼀下这条语句,由于where关键词后⾯需要使⽤条件,但是这条语句根本就不存在条件,所以,该语句就是⼀条错误的语句,肯定不 能被执⾏,不仅报错,同时还不会查询到任何数据。
上述的两种假设,代表了现实的应⽤,说明,语句的构造存在问题,不⾜以应付灵活多变的查询条件。
⼆、使⽤ where 1=1 的好处
假如我们将上述的语句改为:
oracle之where 1=1的⽤法
现在,也存在两种假设
①种假设
如果两个IF都成⽴,那么,语句变为:
MySqlStr=”select * from table where 1=1 and Age=’18′ and Address=’XXXXXX’”,很明显,该语句是⼀条正确的语句,能够正确执⾏,如果数据库有记录,肯定会被查询到。
②种假设
如果两个IF都不成⽴,那么,语句变为:MySqlStr=”select from table where 1=1”,现在,我们来看这条语句,由于where 1=1 是为True的语句,因此,该条语句语法正确,能够被正确执⾏,它的作⽤相当于:MySqlStr=”select from table”,即返回表中所有数据。
⾔下之意就是:如果⽤户在多条件查询页⾯中,不选择任何字段、不输⼊任何关键词,那么,必将返回表中所有数据;如果⽤户在页⾯中,选择了部分字 段并且输⼊了部分查询关键词,那么,就按⽤户设置的条件进⾏查询。
javascript基础书籍下载
说到这⾥,不知道您是否已明⽩,其实,where 1=1的应⽤,不是什么⾼级的应⽤,也不是所谓的智能化的构造,仅仅只是为了满⾜多条件查询页⾯中不确定的各种因素⽽采⽤的⼀种构造⼀条正确能运⾏的动态 SQL语句的⼀种⽅法。
三、我必须使⽤ where 1=1 才能做多条件查询吗
⾮也,您爱使⽤就使⽤,您不喜欢使⽤就不使⽤,对于您⽽⾔,不损失什么,也不会多得什么;
那么,如果我不使⽤where 1=1做多条件查询,该如何构造动态查询语句呢?⾮常简单,在下给您提供⼀种思维:
如下语句:
oracle之where 1=1的⽤法
不管你使⽤不使⽤where 1=1做多条件查询,只要您能够保证您构造出来的查询语句,是正确的就万⽆⼀失了。
四、where 1=1 的总结
为⽅便构造动态的多条件之不确定因素的复杂的正确的查询语句所采取的⼀种“江湖⼿段”。javame下载
此类⽅法,⼀般,在书籍上不常见,⽽在实际的应⽤中,⼈们得从现实⾓度考虑,即要保证能满⾜多条件查询、同时还要能应付不确定因素的灵活性,最 后还要保证语句不出现任何语法错误。
该⽅法不失为⼀种好⽅法;但是,却由于这 where 1=1 不知道让多少新⼿,琢磨了多少次,始终不得要领,同时,还有可能会误导新⼿误⼊歧途;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。