SQL逻辑语句块怎样写,如何做逻辑判断并查询结果
Admin 2022-09-17 群英技术资讯 310 次浏览
首先看以下SQL逻辑语句块:
DECLARE @fieldname varchar(50) DECLARE @fieldvalue nvarchar(100) SET @fieldname='chassisno' --这里可传入chassisno,plateno,owner,contacttelno其中之一或不传 SET @fieldvalue='Zuowenjun' IF @fieldname = 'chassisno' BEGIN SELECT * FROM TABLENAME WHERE chassisno=@fieldvalue END ELSE IF @fieldname = 'plateno' BEGIN SELECT * FROM TABLENAME WHERE plateno=@fieldvalue END ELSE IF @fieldname = 'owner' BEGIN SELECT * FROM TABLENAME WHERE [owner]=@fieldvalue END ELSE IF @fieldname = 'contacttelno' BEGIN SELECT * FROM TABLENAME WHERE contacttelno=@fieldvalue END ELSE BEGIN SELECT * FROM TABLENAME END
现在如果需要用一句SQL语句就要实现上述逻辑判断并查询结果,大家可能会想到采用如下拼接的方法实现:
DECLARE @sqltext NVARCHAR(2000) SET @sqltext='SELECT * FROM TABLENAME WHERE ' + @fieldname + '=''' + @fieldvalue +'''' EXECUTE (@sqltext)
虽然这样看起来确实能实现逻辑判断并查询结果,但看起来不够直观,修改麻烦且容易出错,而且有一定的局限性,因为这里@fieldname与表字段相同,拼接相对容易些,若不相同的情况下,那就无法实现了,所以我这里采用了另一种方法,效率暂且不说,但绝对简单易用而且够灵活,请看如下SQL语句:
SELECT * FROM TABLENAME a WHERE 1=1 --(如果需要其它条件则用其它条件,否则可以这样或不要,如果不要则下面的第一个AND需去掉) AND ((@fieldname = 'chassisno' AND a.chassisno=@fieldvalue) OR (@fieldname<>'chassisno') ) AND ((@fieldname = 'plateno' AND a.plateno=@fieldvalue) OR (@fieldname<>'plateno') ) AND ((@fieldname = 'owner' AND a.[owner]=@fieldvalue) OR (@fieldname<>'owner') ) AND ((@fieldname = 'contacttelno' AND b.contacttelno=@fieldvalue) OR (@fieldname<>'contacttelno') )
经验证这条SQL语句可以实现逻辑判断并查询结果,而且就算@fieldname与表字段不相同,我们也可以直接更换相应的字段即可,现在来简要说明一下其原理:
AND ((@fieldname = 'chassisno' AND a.chassisno=@fieldvalue) OR (@fieldname<>'chassisno') )
因为是AND关联,所以后面括号里面的条件是必须满足,又因为括号里面采用了OR关联,所以括号里面的两边的条件是可以符合一个即可的,翻译一下就是,若@fieldname = 'chassisno'时,则要求a.chassisno=@fieldvalue,否则只要@fieldname<>'chassisno'时,则忽略掉前前面的关联条件。注意他们的特点是互斥的,也就是OR两边的条件只能满足其中之一即可,不知道大家明白没有,当然如果有更好的方法或不同的意见欢迎交流,共同进步!
原文地址:http://www.bkjia.com/Sql_Server/917429.html
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
SQL BETWEEN运算符用于选取介于两个值之间的数据范围内的值。BETWEEN运算符选择给定范围内的值。值可以是数字,文本或日期。BETWEEN运算符是包含性的:包括开始和结束值,且开始值需小于结束值。
这篇文章主要介绍了SqlServer生成连续数字根据指定的数字操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
sql语言具有的功能:1、数据定义功能,能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构;2、数据操纵功能,包括对基本表和视图的数据插入、删除和修改;3、数据控制功能,主要是对用户的访问权限加以控制,以保证系统的安全性。
这篇文章介绍了SQL Server搜索特定对象的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要为大家介绍了SQL Server 数据库基础编程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008