我的数据存储在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的算术溢出错误。
如何正确转换此数据?
答案 0 :(得分:1)
答案 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;