【问题标题】:Converting varchar into a decimal将 varchar 转换为小数
【发布时间】:2018-12-03 09:23:50
【问题描述】:

如何将左侧下方的值转换为括号中的值? (SQL Server 2012)

50    (000.050)
100   (000.100)
1000  (001.000)
9999  (009.999)
20000 (020.000)

【问题讨论】:

  • SQL Server 2012

标签: sql-server tsql data-conversion


【解决方案1】:

这似乎很简单……你自己尝试过什么?

首先:如果这些值是(整数)数字,则不应将它们存储在字符串列中。如果其中有非数字值,任何代码都可以轻松破解...

你可以试试这个:

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上有很多例子......

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 2013-09-08
    • 2011-12-31
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多