Sql server 将nvarchar数据转换为十进制

Sql server 将nvarchar数据转换为十进制,sql-server,sql-server-2012,data-conversion,Sql Server,Sql Server 2012,Data Conversion,我将数据存储在nvarchar(10)列中,需要将其转换为decimal(10,3)。每条记录都有整整10个字符,前导为零。最后三个数字代表小数。如何转换以下示例 col1 ---------- 0000100001 0002507630 0090078607 0258736000 预期产量 col1 col2 ------------------------------- 0000100001 100.001 0002507630

我将数据存储在
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时出现算术溢出错误

如何正确转换此数据?

尝试以下方法:

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

在外部强制转换中,将内部转换除以1000。您有什么语法建议吗?当我尝试除以1000时,返回的结果是“/”附近的语法不正确。”sidux已经发布了我建议的答案。它应该对你有用。
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;