【转载】程序设计过程中SQL语句Where 1=1的作用
2019-05-13 07:18:16来源:博客园 阅读 ()
在Asp.Net网站或者Java网站的程序设计的过程中,很多时候我们可以看到拼接SQL语句的写法的时候都可以看到最前面有个Where 1=1这个条件,其实Where 1=1这是个恒等式,SQL语句写成Where 1=1的形式可以更好的拼接查询语句条件。
结论:Where 1=1为恒等式,拼接SQL语句使用Where 1=1这个语句段主要是为了后续更好的拼接成完成的SQL语句。
举例,前台页面可能传入参数Name和Code两个参数值,都是对应SQL语句查询条件,但这两个查询条件也可全为空,即不传实际参数,在程序中我们时常会看到下面的写法。
string sql="Select * FRom TableA Where 1=1"; if( string.IsNullOrWhiteSpace(Name)) { sql=sql+string.Format(" AND Name={0}",Name); } if( string.IsNullOrWhiteSpace(Code)) { sql=sql+string.Format(" AND Code={0}",Code); }
使用了Where 1=1这个恒等式后,后续只需要判断对应的属性值是否为空,不为空直接加入对应的拼接SQL语句段。如果不加入Where 1=1这个条件,代码可读性就会变得更差,可能出现下列几种情况,读者可自行思考下。
(1)Name和Code的值都为空,则Sql语句是不能带Where的,直接是:Select * FRom TableA
(2)如果Name、Code有一个为空,另一个不为空的时候,Sql语句是不会带有And这个关键字,Sql最终语句要么为Select * FRom TableA Where Name=@Name 要么为Select * FRom TableA Where Code=@Code;
(3)如果Name、Code都不为空的时候,语句中就含有AND这个关键字,但Name条件前不会有AND关键字。可以想象下如果有10个查询条件,是不是还要判断下那个查询条件属性是SQL语句中的第一个查询字段。这样的判断就麻烦多了。
当然如果不用Where 1=1这种写法,还有种稍微容易阅读的方法可采用,就是单独定义个字段sqlFilter用于查询条件的拼接,最后判断下sqlFilter是否为空,如果不为空,则截取掉该sqlFilter字符串的最前面几个字符 AND之后得到最终查询条件,拼接到查询语句Sql中。
备注:原文转载自博主个人技术站点IT技术小趣屋,原文链接程序设计过程中SQL语句Where 1=1的作用_IT技术小趣屋。
原文链接:https://www.cnblogs.com/xu-yi/p/10852583.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MVC异常处理详解 2019-11-01
- 【转载】 C#中手动创建一个DataTable对象并写入数据 2019-07-23
- 【转载】Asp.Net生成图片验证码工具类 2019-07-23
- 【转载】 使用宝塔Linux面板功能查看服务器内存使用情况 2019-07-23
- 【转载】腾讯云如何重置云服务器实例密码 2019-07-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash