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