SQLserver 字符串转数字问题
之前做个需求遇到字符串转数字,遇到点问题和大家分享下。
我想对查询的结果集分组求和,本以为转换下数据类型用聚合函数直接求和就完事了。就像下面这样
SELECTp.id,p.objno,p.objname,
-- bt.projecttypename,bic.ratename,sum(convert(numeric(10,2),bic.ratevalue )),bic.ratevalue
--CAST ( bic.ratevalue AS NUMERIC(10,2) )FROMBiddingproject_approval_budget baLEFT JOIN Biddingproject_typemaster bt ON ba.id = bt.tenderidLEFT JOIN Biddingproject_Interestrate bi ON bi.mastertprojecttypeid = bt.idLEFT JOIN project p ON p.id = bi.ratevalueLEFT JOIN Biddingproject_implementation_costs bic ON bic.mastertprojecttypeid = bt.idLEFT JOIN Biddingproject_typemaster btv ON ba.id = btv.tenderid
WHEREbi.ratename = '项目子编号ID' AND bi.ratevalue <> '' AND bi.ratevalue IS NOT NULL AND btv.projecttypename = '小计' AND bt.projecttypename NOT IN ( '小计', '差额' ) AND bic.ratename <> '8、实施费用' AND ba.id = 'AUAS4IJIUIWLVD3KBOXSLQK9T2NM1148'
GROUP BYp.id,bt.id,bic.ratename,p.objno,bic.ratevalue,p.objname
结果运行转换数据异常。
想着不应该啊,换 cast 函数 依旧报 数据转换异常。
去掉convert 函数,先看下数据,数据结果如下:
原来里面有空字符串,导致无法转换。这时可能有同鞋说用isnull函数 ,然后发现依旧报错。为什么呢?
isnull 函数是对null进行处理的,在这里不起作用。
这里我们要用 case 函数,最终SQL 调整如下
SELECTp.id,p.objno,p.objname,bic.ratename,
sum(case when bic.ratevalue = '' then 0 else CAST ( bic.ratevalue AS NUMERIC(10,2) ) end )
FROMBiddingproject_approval_budget baLEFT JOIN Biddingproject_typemaster bt ON ba.id = bt.tenderidLEFT JOIN Biddingproject_Interestrate bi ON bi.mastertprojecttypeid = bt.idLEFT JOIN project p ON p.id = bi.ratevalueLEFT JOIN Biddingproject_implementation_costs bic ON bic.mastertprojecttypeid = bt.idLEFT JOIN Biddingproject_typemaster btv ON ba.id = btv.tenderid
WHEREbi.ratename = '项目子编号ID' AND bi.ratevalue <> '' AND bi.ratevalue IS NOT NULL AND btv.projecttypename = '小计' AND bt.projecttypename NOT IN ( '小计', '差额' ) AND bic.ratename <> '8、实施费用' AND ba.id = 'AUAS4IJIUIWLVD3KBOXSLQK9T2NM1148'
GROUP BYp.id,bic.ratename,p.objno,p.objname
在这里我们先用case函数把是空的字符串转成 0 ,在这里要注意 case函数 会见数字默认转为 int 类型 这里还需要一点小小的处理。 然后大功告成。结果如下。
SQLserver 字符串转数字问题相关推荐
- python字符串拼接数字_python字符串和数值操作函数大全(非常全)
字符串和数值型数字的操作大全 1.反斜杠\的使用规则:一般使用表示续行的操作,可以其他符号相结合组成其他的一些使用符号,转义字符\'的使用会识别引号,使得字符串中的引号和外面本来的啊引号相区分. (1 ...
- iOS 改变字符串中数字的颜色
匹配中文字符 [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内) [^\x00-\xff] 匹配网址:[a-zA-z]+://[^\s]* 匹配国内电话 \d{3}-\d{8}|\d{4} ...
- SCRIPT1028:缺少标识符、字符串或数字 jquery ajax
2019独角兽企业重金招聘Python工程师标准>>> SCRIPT1028:缺少标识符.字符串或数字 使用jquery时报此错误 究其原因是对象键值对格式错误: 原格式: 多了 ...
- pandas使用read_csv读取文件数据、设置converters参数将百分比字符串转换为数字
pandas使用read_csv读取文件数据.设置converters参数将百分比字符串转换为数字 目录 pandas使用read_csv读取文件数据.设置converters参数将百分比字符串转换为 ...
- C/C++中字符串与数字之间的转换
主要有两种方式:C 中能够使用 sprintf 将数字转为字符数组,sscanf 将字符数组转为数字:而在 C++ 中不仅能够使用 C 中的方法,还能够使用 stringstream 实现字符串与数字 ...
- 如何用计算机猜数字,杭电2010计算机复试笔试题 2道acm简单题(2010):1.猜数字游戏;2.字符串提取数字并求和;...
//第一题是猜数字的游戏. //题目:随即产生一个3位的正整数,让你进行猜数字, //如果猜小了,输出:"猜小了,请继续". //如果猜大了,输出:"猜大了,请继续&qu ...
- js 判断是不是数字||判断字符串是不是数字(正则表达式)
js使用正则表达式判断对象是不是数字,或者字符串是不是数字,或者是不是数字类型 1 //判断是不是一个数字 或者 一个字符串里全是数字 2 isNumber (value) { 3 if (value ...
- 判断字符串是不是数字
在网上看到一篇关于判断字符串是数字的函数, 感觉思路不错, 代码简洁, 我转载一下: 代码 public static bool isnum(string xtext) //判断字符串是不是数字 ...
- python统计字符串数字个数_python统计字符串中数字个数_后端开发
python怎么随机生成奇数_后端开发 python随机生成奇数的方法:导入random模块,使用random模块生成随机数,然后判断生成的随机数是否为奇数,若是奇数就加入列表.使用此方法得到的列表包 ...
最新文章
- 以太网控制芯片DM9000在2440裸机上终于能正确接收数据了(源代码工程已经上传)...
- 配置浮动路由,实现链路冗余
- Vue 踩坑日志 - 有关路由传参的坑
- Linux 内核引导选项简介 *********很多常用的受益匪浅
- 百度地图示例左侧的代码编辑器Ace Editor
- 将字符串型转换为整形
- 【笔记】python os的使用 文件批量重命名 批量移动文件 将png转jpg代码
- linux封装函数,libc库和封装函数 | 求索阁
- 有一只经过训练的蜜蜂……
- 计算机数学基础模拟试题,计算机数学基础》模拟考试试题.doc
- jquery兄弟标签_js jquery获取当前元素的兄弟级 上一个 下一个元素
- 有钱就是任性!阿里20亿美元拿下网易考拉:欢迎加入阿里动物园
- python 速成学堂_Python 与数据科学入门
- 台达ASDA-A2速度模式调试方法
- 30+本MySQL经典书籍
- html边界填充边框,CSS边界与填充
- 二、es的可视化工具:Kibana及练习
- LeetCode--宝石与石头
- windows中的SC命令
- 项目经理,你有什么优势吗?