【问题标题】:Convert nvarchar data to decimal将 nvarchar 数据转换为十进制
【发布时间】:2015-03-18 13:47:36
【问题描述】:

我有数据存储在 nvarchar(10) 列中,我需要将其转换为 decimal(10,3)。每条记录都是完整的 10 个字符,前导零。最后三个数字代表小数。如何转换以下示例?

col1
----------
0000100001
0002507630
0090078607
0258736000

预期输出

col1                   col2
-------------------------------
0000100001              100.001
0002507630             2507.630
0090078607            90078.607
0258736000           258736.000

我尝试过使用

Cast(covert(decimal(10, 3), col1) as Decimal(10, 3)) as col2

我收到的输出是

将 nvarchar 转换为数字数据类型时出现算术溢出错误。

如何正确转换这些数据?

【问题讨论】:

  • 在外部转换中将内部转换除以 1000。
  • 您有可以建议的语法吗?当我尝试除以 1000 时,我返回“'/' 附近的语法不正确。”
  • sidux 发布了我的建议作为答案。它应该适合你。

标签: sql-server sql-server-2012 data-conversion


【解决方案1】:
DECLARE @t AS TABLE (a NVARCHAR(10));
INSERT INTO @t VALUES ('0000100001'),('0002507630'),('0090078607'),('0258736000');



SELECT a,CAST(CAST(a AS INT)/1000.000  AS DECIMAL(10,3))
FROM @t;

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT CAST (LEFT(col1, 7) + '.' + RIGHT(col1,3) AS DECIMAL(10,3))
    

    SQL Fiddle demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 2013-05-31
      相关资源
      最近更新 更多