sql 中如何将千分号数值,转化成decimal型,或int型计算。如何对列值进行处理,如果是中文就是0,如果是数值就是数值
前言最近项目中,有对财务方面打交道。所以在sql中有对一些金额的计算和统计。千分号格式的一系列问题也是被我遇上了。(一)sql中将是中文的为0,是数值的就是数值我这里的数值直接是千分号的,所以进行了一些处理, 使用ISNUMERIC函数如果列值是字符的话就输出 1,是数字就直接输出数字如果使用千分号格式的数值,对他进行直接强转为int或是 decimal的话会直接报错的。所以最好是强转的同时 再C
·
前言
最近项目中,有对财务方面打交道。所以在sql中有对一些金额的计算和统计。千分号格式的一系列问题也是被我遇上了。
(一)sql中将是中文的为0,是数值的就是数值
我这里的数值直接是千分号的,所以进行了一些处理, 使用ISNUMERIC 函数如果列值是字符的话就输出 1,是数字就直接输出数字
如果使用千分号格式的数值,对他进行直接强转为int或是 decimal的话会直接报错的。

所以最好是强转的同时 再CAST 给 as money 一下 。正确做法是
select convert(decimal(16,2),cast('5,222.01' as money))

好了步入正题!sql中将是中文的为0,是数值的就是数值
select
sum(
case when ISNUMERIC(convert(decimal(16,2),cast('5,222.01' as money),1))=1
then CONVERT( decimal(16,2),convert(decimal(16,2),cast('5,222.01' as money),1))
else 0 end
)
运行结果

(二)sql 中如何将 千分号数值,转化成decimal型,或int型计算

select convert(decimal(16,2),cast('5,222.01' as money),1)
(三)SQL 将int型,或decimal型 转为千分号格式

select convert(varchar(20),cast('5222.01' as money),1)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)