如何从临时表转换varchar数据并插入到实际表中

时间:2015-02-05 14:07:47

标签: sql-server

我有一个包含以下列和数据类型的表。

成本表数据类型:

费用 - 小数(18.5)

LineNumber - int

产品 - nchar

数量 - 浮动

我正在尝试将名为“Test”的临时表中的数据插入到上表中。此临时表中的所有数据都是nchar。我已经尝试过以下代码。我收到错误消息“错误转换数据类型varchar为数字

INSERT INTO Cost 
(
   Cost, 
   LineNumber, 
   Product, 
   Quantity
)
SELECT 
    (convert(decimal,ts.c1)),
    (convert(int,ts.c2)),
    convert(nvarchar,ts.c3), 
    (convert(float ,ts.c4))
FROM #Test ts

也尝试了

INSERT INTO Cost 
(
    Cost, 
    LineNumber, 
    Product, 
    Quantity
)
SELECT 
    cast(ts.c1 as decimal(18,5)), 
    cast(ts.c2 as int), 
    cast (ts.c3 as nvarchar), 
    cast(ts.c4 as float)
FROM #Test ts

非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

该消息表示表中的char数据无法转换为数字 - 它可能包含字母字符。

尝试此操作以查看哪些行会给您带来麻烦:

SELECT * FROM #Test
WHERE ISNUMERIC(c1) = 0
OR ISNUMERIC(c2) = 0
OR ISNUMERIC(c4) = 0