SQL语句小数变成百分数
(select convert(Numeric(8,2),( select COUNT(*) from 表 where 列1=1229)) /
(select count(列1) from 表)))
我得出的数是小数 怎么能让小数变成百分数 展开
代码:
select cast(cast(0.1234*100 as numeric(10,2)) as varchar(50))+'%'
问题分析:
1、小数肯定是数字类型
2、百分数肯定是字符类型,另外百分比一般只有两位小数
解决办法:
1、需要先将小数变成百分比,也就是将小数*100,将结果小数位保留为两位
2、再将小数*100转为字符类型后在附加%符号
示例:将小数【0.1234】转为百分比【12.34%】
扩展资料:
注意事项
一、concat函数
该函数用于字串的拼接,比如我们想把10变成10%,就可以写成:
select concat(10,'%');
二、FLOOR(X)
将小数的小数部分去除,只留下整数部分,并且不进行四舍五入。
select FLOOR(5.5);
运行结果为:5
ROUND(X,D)函数和TRANCATE(X,D)函数
两个函数都可以用来对小数保留指定小数位数,其中第二个参数D用来指定要保留到第几位。差别是前者会进行四舍五入,而后者不会。
select convert(numeric(8,2) ,
cast( (select convert(Numeric(8,2),( select COUNT(*) from 表 where 列1=1229)) /
(select count(列1) from 表))) * 100 as varchar(10) ) + '%'
注:*100 as varchar(10))+'%' (10) 变成长度是10的字符串,然后再加上%号,如果不用加%,就不用cast,直接 * 100 就可以了。
扩展资料:
注意事项
一、concat函数
该函数用于字串的拼接,比如我们想把10变成10%,就可以写成:
select concat(10,'%');
二、FLOOR(X)
将小数的小数部分去除,只留下整数部分,并且不进行四舍五入。
select FLOOR(5.5);
运行结果为:5
ROUND(X,D)函数和TRANCATE(X,D)函数
两个函数都可以用来对小数保留指定小数位数,其中第二个参数D用来指定要保留到第几位。差别是前者会进行四舍五入,而后者不会。
select ROUND(5.55,1);
select TRANCATE(5.55,1);
二者的运行结果分别为:5.6、5.5。
问题分析:
1、小数肯定是数字类型
2、百分数肯定是字符类型,另外百分比一般只有两位小数
解决办法:
1、需要先将小数变成百分比,也就是将小数*100,将结果小数位保留为两位
2、再将小数*100转为字符类型后在附加%符号
示例:将小数【0.1234】转为百分比【12.34%】
代码:
select cast(cast(0.1234*100 as numeric(10,2)) as varchar(50))+'%'
cast( (select convert(Numeric(8,2),( select COUNT(*) from 表 where 列1=1229)) /
(select count(列1) from 表))) * 100 as varchar(10) ) + '%'
最后这个*100 as varchar(10))+'%' (10) 是什么意思啊!!
变成长度是10的字符串,然后再加上%号。
如果不用加%,就不用cast,直接 * 100 就可以了。