将varchar值'39 .63'转换为数据类型smallint

时间:2016-09-05 18:43:58

标签: sql-server

我正在尝试将第一个表中的数据移动到第二个表,并转换某些数据类型。

我正在使用存储过程来完成此操作,但我一直收到错误。 这是错误消息

 Msg 245, Level 16, State 1, Procedure sp_Load_Dim_Airports, Line 5 
 Conversion failed when converting the varchar value '39.63' to data type smallint.

请参阅下面我们需要转换为的数据类型。需要连接经度和纬度以形成一个名为LatLong的新列。

如何将数据从第一个表格转换并传输到第二个表格?那么我将如何连接第二个表中的列数少于第一个表?

修改:

这是我正在使用的proc但是我收到错误消息245,级别16,状态1,过程sp_Load_Dim_Airports,第5行转换失败,将varchar值'39 .63'转换为数据类型smallint

 ALTER PROC [dbo].[sp_Load_Dim_Airports] 
 AS 
 BEGIN 
 INSERT INTO [AIRPORTS-DM].dbo.Dim_Airports (AirportId, AirportName, City, Country, Altitude, Latitude, Longitude, TimeZone, LatLong) 
 SELECT * FROM DBO.Src_Airports 
 DECLARE @NegativeNumeric decimal (10,2) 
 DECLARE @Latitude decimal (10,2) 
 SELECT @NegativeNumeric = -1 * CAST (REPLACE(@NegativeNumeric ,'-','') AS DECIMAL (10,2)) 
 SELECT CONVERT(Decimal (10,2), CONVERT(Varchar (50), @Latitude)) 
 END 

 EXEC [dbo].[sp_Load_Dim_Airports]

0 个答案:

没有答案