sql 中如何将千分号数值,转化成decimal型,或int型计算。如何对列值进行处理,如果是中文就是0,如果是数值就是数值

前言

最近项目中,有对财务方面打交道。所以在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)

猜你喜欢

转载自blog.csdn.net/WenRouDG/article/details/109274754
今日推荐