将 nvarchar 数据转换为十进制

Convert nvarchar data to decimal

我有数据存储在 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

我收到的输出是

Arithmetic overflow error converting nvarchar to data type numeric.

如何正确转换这些数据?

试试这个:

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

SQL Fiddle demo

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;