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;