SqlServer中将数值类型的末尾0去掉
Sql Server中将数值类型的末尾0去掉
1、SQL中要求查询出某表⾥XX数量:
SELECT
CONVERT(FLOAT, ISNULL(A.VALUE,0))
FROM WORK_INFO AS A
WHERE
<
注意:
CONVERT(FLOAT,XX)虽然可以去掉⼩数点后末尾0,但是,当整数部不⼤于15位数时,⼩数部显⽰个数=15-整数部个数;当整数部⼤于15位数时,⼩数部会四舍五⼊eg:
SELECT
CONVERT(float ,12345678.123456789000)
, CONVERT(float ,123.1234567896667000)
, CONVERT(float ,123456789333333.1234567896667000)
结果为:
12345678.1234568
123.123456789667
1.23456789333333E15
2、SQL中要求查询出某表⾥XX数量+单位:
第⼀种:(不建议使⽤)
SELECT
CONVERT(VARCHAR(20),CONVERT(FLOAT, ISNULL(A.VALUE,0))) + ISNULL(A.UNIT,'')
FROM WORK_INFO AS A
WHERE
<
注意:
①两个ISNULL不可省,要不然当其中⼀个值为null时,查询出来值是null
②CONVERT(FLOAT,XX)虽然可以去掉⼩数点后末尾0,但有两个致命问题,当整数部不⼤于6位数时,⼩数部显⽰个数=6-整数部个数;当整数部⼤于6位数时,⼩数部eg:CONVERT(FLOAT,2345.6790)-->2345.68;
CONVERT(FLOAT,3458888.6789)-->3.45889e+006
③由于单位不是数值,所以⽤CONVERT(VARCHAR(20),)再拼接单位
第⼆种:(有点⿇烦)
SELECT
ISNULL(REVERSE(STUFF(REVERSE(CONVERT(VARCHAR,A.VALUE)),1,PATINDEX('%[1-9]%',REVERSE(CONVERT(VARCHAR,A.VALUE)))-1,'')), 0)
+ ISNULL(A.UNIT, '')
FROM WORK_INFO AS A
WHERE
<
关于第⼆种中使⽤到的函数:
①Sql sever⾥⾃带的REVERSE函数,这个函数的主要功能是把⼀个字符产反转。
--select REVERSE('hello,world')
--将得到如下的输出:dlrow,olleh
②Sql sever⾥⾃带的STUFF函数将字符串插⼊到另⼀个字符串中。 它从第⼀个字符串的开始位置删除指定长度的字符;然后将第⼆
个字符串插⼊到第⼀个字符串的开始位置。
--语法:STUFF ( character_expression , start , length , replaceWith_expression )isnull的用法
③Sql sever⾥⾯有个⾃带的PATINDEX函数,返回pattern字符串在表达式expression⾥第⼀次出现的位置,起始值从1开始算。  --语法格式:PATINDEX ( '%pattern%' , expression )
--pattern字符串在expression表达式⾥没就返回0,对所有有效的⽂本和字符串就是有效的数据类型。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。