我正在尝试执行insert select语句将所有数据从一个表移动到另一个表。源表中的两个列的数据类型为NVARCHAR
,目标表的数据类型为Float
。
我试图使用cast
和convert
,但我不断收到以下消息:
将数据类型nvarchar转换为float时出错。
代码:
INSERT INTO Destination_Table
([SCAC]
,[Date]
,[Orgin]
,[Destination Low Zip]
,[Destination High Zip]
,[Class]
,[Minimum Charge]
)
SELECT [SCAC]
,[Date]
,[Origin]
,cast([Destination Low Zip] as float)
,cast([Destination High Zip] as float)
,[Class]
,[Minimum Charge]
FROM source_table
答案 0 :(得分:0)
在没有看到数据的情况下,我猜测列可能有一些NULL数据,这会抛出此错误,因此代码应为
INSERT INTO Destination_Table
([SCAC]
,[Date]
,[Orgin]
,[Destination Low Zip]
,[Destination High Zip]
,[Class]
,[Minimum Charge]
)
SELECT [SCAC]
,[Date]
,[Origin]
,cast(ISNULL([Destination Low Zip],0) as float)
,cast(ISNULL([Destination High Zip],0) as float)
,[Class]
,[Minimum Charge]
FROM source_table
如果你想要NULL,那么
INSERT INTO Destination_Table
([SCAC]
,[Date]
,[Orgin]
,[Destination Low Zip]
,[Destination High Zip]
,[Class]
,[Minimum Charge]
)
SELECT [SCAC]
,[Date]
,[Origin]
,NULLIF(CAST(ISNULL([Destination Low Zip],0) as float), 0)
,NULLIF(CAST(ISNULL([Destination High Zip],0) as float),0)
,[Class]
,[Minimum Charge]
FROM source_table