将nvarchar数据转换为十进制数

时间:2015-03-18 13:47:37

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

我的数据存储在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转换为数据类型numeric的算术溢出错误。

如何正确转换此数据?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

SQL Fiddle demo

答案 1 :(得分: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;