您好,登录后才能下订单哦!
SQLServer数据库中如何使用ISNULL函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
SQLServer数据库ISNULL函数怎么应用
1.利用ISNULL函数干掉OR运算!
题目是查询表中VAL小于20的值,包括NULL值:
SELECT*FROMTWHEREISNULL(VAL,-1)<20SELECT*FROMTWHEREVALISNULLORVAL<20 两个SQL具有相同的输出结果 GRP_AGRP_BGRP_CVAL-----------------a1b1c110a1b1c210a2b3c3NULLa2b3c3NULLa2b3c3NULL(5行受影响) GRP_AGRP_BGRP_CVAL----------------a1b1c110a1b1c210a2b3c3NULLa2b3c3NULLa2b3c3NULL(5行受影响) SQLServer数据库ISNULL函数怎么应用 2.ISNULL非主流更新表存储过程示例 如某更新表存储过程如下: CREATEPROCUpdateT(@IDINT,@GRP_AVARCHAR(10)=NULL,@GRP_BVARCHAR(10)=NULL,@GRP_CVARCHAR(10)=NULL,@VALINT=0)ASBEGINUPDATETSETGRP_A=@GRP_A,GRP_B=@GRP_B,GRP_C=@GRP_C,VAL=@VALWHEREID=@IDEND 当我们使用这个存储过程的时候,必须先得该行的所有记录,再把所有记录更新回去,可是这并不总是必须的。有时候手头只有两个数据:ID和VAL,我只想更新这个VAL,又有时候手头有另外两个数据:ID和GRP_A,这时候只更新GRP_A列即可。还有很多情况,如: 仅更新GRP_A, 仅更新GRP_A,GRP_B 仅更新GRP_A,GRP_B,GRP_C 仅更新GRP_A,GRP_B,GRP_C,VAL ... 这样的组合太多了,要想一劳永逸解决问题那就得更新任何字段前,先得到整行记录,再整行更新回去,于是多了一项工作:先查询,再更新,那没有办法不先查询直接更新某一列呢而且列可以任意组合 在给出答案前,先声明一句:这个方法算不上完美解决方案,仅仅是个思路罢了,虽然我一直认为没什么影响,但假如要在正式项目中使用,建议还是多听听DBA的意见! 非主流更新任意列存储过程: CREATEPROCUpdateT(@IDINT,@GRP_AVARCHAR(10)=NULL,@GRP_BVARCHAR(10)=NULL,@GRP_CVARCHAR(10)=NULL,@VALINT=0)ASBEGINUPDATETSETGRP_A=ISNULL(@GRP_A,GRP_A),GRP_B=ISNULL(@GRP_B,GRP_B),GRP_C=ISNULL(@GRP_C,GRP_C),VAL=ISNULL(@VAL,VAL)WHEREID=@IDEND
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。