我有每晚运行的以下更新查询,该查询将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
四等分部分信息以nvarchar(30)的形式存储在宗地表中,格式如下:
NW12-5-6E
在目标表中,它将存储为char(15),如下所示:
dlonglegal_1 = NW
dlonglegal_2 = 12
dlonglegal_3 = 5
dlonglegal_4 = 6
dlonglegal_5 = E
我试过将数字字段转换为不成功的数字。我很困惑,为什么更新今天开始失败,因为很长一段时间以来对数据库结构都没有任何更改。
就像artm所建议的那样,我认为最可能的情况是数据问题,但一切都正确。我分别为每一列运行更新,并且它适用于每一列。然后,我运行了完整的查询,并且没有问题地完成了查询。我不确定最终的问题是什么,但显然它似乎又可以工作了。感谢您的投入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句