将数据类型从varchar转换为numeric时出错

时间:2015-05-14 13:25:20

标签: sql-server sql-server-2012

我每晚运行以下更新查询,将SQL空间数据库(GIS)中的GIS信息更新到另一个数据库(LIVE)。这个更新在几个月内没有问题,今天突然间它失败了

  

“将数据类型从varchar转换为数字时出错。”

update LIVE.dbo.PT001
Set
    LIVE.dbo.pt001.dlonglegal_1 = Left(GIS.dbo.parcel.quartersection,2),
    LIVE.dbo.pt001.dlonglegal_2 = SUBSTRING(GIS.dbo.parcel.quartersection,3,CHARINDEX('-',GIS.dbo.parcel.quartersection+'-')-3),
    LIVE.dbo.pt001.dlonglegal_3 = SUBSTRING(GIS.dbo.parcel.quartersection,CHARINDEX('-',GIS.dbo.parcel.quartersection+'-')+1,1),
    LIVE.dbo.pt001.dlonglegal_4 = SUBSTRING(GIS.dbo.parcel.quartersection,CHARINDEX('-',GIS.dbo.parcel.quartersection+'-')+3,1),
    LIVE.dbo.pt001.dlonglegal_5 = right(GIS.dbo.parcel.quartersection,1)
From GIS.dbo.parcel inner Join
LIVE.dbo.PT001 on GIS.dbo.parcel.roll = LIVE.dbo.pt001.dROLLNMBR
where GIS.dbo.parcel.roll = LIVE.dbo.PT001.drollnmbr AND
GIS.dbo.parcel.quartersection is not null

Quartersection信息以nvarchar(30)的形式存储在宗地表中,格式如下:

NW12-5-6E

在目标表中,它将存储为char(15),如下所示:

dlonglegal_1 = NW
dlonglegal_2 = 12
dlonglegal_3 = 5
dlonglegal_4 = 6
dlonglegal_5 = E

我已尝试将数字字段转换为数字但未成功。由于数据库结构在很长一段时间内没有发生任何变化,我很难理解今天更新开始失败的原因。

1 个答案:

答案 0 :(得分:0)

像artm建议我认为最可能出现的情况是数据存在问题,但一切都是正确的。我分别为每个列运行了更新,它适用于每个列。然后我运行完整的查询,它完成没有问题。我不确定最终的问题是什么,但显然它似乎再次起作用。谢谢你的意见。