sql语句什么时候加双引号,sql语句加双引号怎么设置

首页 > 教育培训 > 作者:YD1662023-06-04 19:05:10

使用case when

小伙伴在百度搜寻很多资料或许也是看了我的文章,想到了可以用case when来解决这个问题,但是执行过程中报“sql server 从数据类型varchar 转换为 float时出错”。

sql语句什么时候加双引号,sql语句加双引号怎么设置(25)

出错信息

因为我对mssql不熟悉这个问题对于我来说还是有一定的难度。我的思考过程如下,既然是数据类型出错,ISNUMERIC(b.lac13) > 0,这个条件嫌疑就很大,isnumeric没有真正把“数字值”过滤干净,我百度一下isnumeric返回值,只有两个返回值1,0。我当时敏锐感觉到问题就在这里,ISNUMERIC(b.lac13) > 0这种写法本身就是一个“坑”,假设判断ISNUMERIC(‘阴性’) 返回0,0>0就成立,convert去转换的时候就会报“sql server 从数据类型varchar 转换为 float时出错”。

我叫小伙伴改成ISNUMERIC(b.lac13) and CONVERT(float, b.LAC10) < CONVERT(float, b.lac13),再测试,果然问题就解决了。1代表true,0代表false这个习惯是从C语言那里继承过来的。不过小伙伴有点担心,如果ISNUMERIC(‘阴性’) and CONVERT(float, ‘阴性’) 这样判断不是一样有问题吗?我了解小伙伴这个担心,如果他掌握一个基础知识,这种担心是完全是多余的。什么意思,一般编程语言都会有一个if条件熔断机制。举例说明:条件1 and 条件2 and 条件3,假设条件1是false,就可以决定整个表达式的值,意味着条件2 , 条件3不会再去做判断处理,就好像发生了“熔断”。再比如:条件1 or 条件2 or 条件3,假设条件1是true,就可以决定整个表达式的值,意味着条件2 , 条件3不会再去做判断处理。

如果小伙伴还是不放心,可以将条件改成ISNUMERIC(b.lac13) == 1,就不会存在理解不了这个问题了。

sql语句什么时候加双引号,sql语句加双引号怎么设置(26)

处理效果

七、总结

俗说“光说不练假把式”。多写sql才能掌握真技术,同时也要不停的跳出自己的“舒适区”。为什么有人干了10年,水平还是很菜,因为他只不过把有些事情重复干了10年而己,并没有真的成长。每次写sql的时候,能不能不用中间表、能不能再简单一点,每次挑战一下自己,完成同样的效果。所谓的高手,大部分都在挑战自己能力边界。最后祝大家都从文中有所收获,成为sql高手!

上一页34567末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.