将 varchar 转换为小数
Converting varchar into a decimal
如何将左下方的值变成括号中的值? (SQL 服务器 2012)
50 (000.050)
100 (000.100)
1000 (001.000)
9999 (009.999)
20000 (020.000)
这似乎很容易......你自己尝试了什么?
首先:如果这些值是(整数)数字,则不应将它们存储在字符串列中。如果其中有非数字值,任何代码都可以轻松破解...
你可以试试这个:
DECLARE @mockup TABLE(ID INT IDENTITY,YourValue VARCHAR(100))
INSERT INTO @mockup VALUES('50'),('100'),('1000'),('9999'),('20000');
SELECT *
,CAST(YourValue AS DECIMAL(10,3))/1000 AS NewValue
,FORMAT(CAST(YourValue AS DECIMAL(10,3))/1000,'000.000') AS Formatted
FROM @mockup
将 "1000"
之类的字符串转换为 DECIMAL
将返回一个数字。这个数字可以除以 1000 得到所需的值。
如果你需要提供的格式,你可以在SQL-Server 2012+上使用FORMAT()
,但这个功能被称为相当慢......如果这对你很重要,搜索其他格式化数字的方法。这里有很多关于 SO 的例子...
如何将左下方的值变成括号中的值? (SQL 服务器 2012)
50 (000.050)
100 (000.100)
1000 (001.000)
9999 (009.999)
20000 (020.000)
这似乎很容易......你自己尝试了什么?
首先:如果这些值是(整数)数字,则不应将它们存储在字符串列中。如果其中有非数字值,任何代码都可以轻松破解...
你可以试试这个:
DECLARE @mockup TABLE(ID INT IDENTITY,YourValue VARCHAR(100))
INSERT INTO @mockup VALUES('50'),('100'),('1000'),('9999'),('20000');
SELECT *
,CAST(YourValue AS DECIMAL(10,3))/1000 AS NewValue
,FORMAT(CAST(YourValue AS DECIMAL(10,3))/1000,'000.000') AS Formatted
FROM @mockup
将 "1000"
之类的字符串转换为 DECIMAL
将返回一个数字。这个数字可以除以 1000 得到所需的值。
如果你需要提供的格式,你可以在SQL-Server 2012+上使用FORMAT()
,但这个功能被称为相当慢......如果这对你很重要,搜索其他格式化数字的方法。这里有很多关于 SO 的例子...