我想将逗号括在varchar
类型的数字中,并且只有一个小数点,没有汇总。
例如:
DECLARE @val varchar(50) = '12345.999'
我想要结果为:
12,345.9
到目前为止,我已经尝试过:
select convert(VARCHAR(15), cast(@val as money), 1)
结果:12,346.00
但它正在对价值进行四舍五入。
请帮忙。提前谢谢。
答案 0 :(得分:3)
DECLARE @val varchar(50) = '12345.999'
SELECT LEFT(CONVERT(VARCHAR(15),CAST(@val AS MONEY),1),CHARINDEX('.',@val)-3) + SUBSTRING(@val,CHARINDEX('.',@val)-3,5)
答案 1 :(得分:2)
也许这会奏效。在转换为LEFT()
和MONEY
之后,只需使用VARCHAR
功能几次
DECLARE @val VARCHAR(50) = '12345.99999'
SELECT LEFT(CONVERT(VARCHAR(15),CAST(LEFT(@val,
CHARINDEX('.',@val,1)+1) AS MONEY),1),CHARINDEX('.',@val,1)+2)
Result:
12,345.9
** 修改 **
在考虑变量的数字可能更大的可能性之后,当有多个逗号(即123,412,345.999)时它将无效,因此我正在编辑以包含CASE
语句:
DECLARE @val VARCHAR(50) = '123412345.99999'
SELECT LEFT( CONVERT(VARCHAR(15),
CONVERT(MONEY
,LEFT(@val, CHARINDEX('.',@val,1)+1)
,1)
,1)
, CHARINDEX('.',@val)+(CASE
WHEN LEN(LEFT(@val, CHARINDEX('.',@val)-1))>6 THEN 3
ELSE 2
END))