我每晚运行以下更新查询,将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
我已尝试将数字字段转换为数字但未成功。由于数据库结构在很长一段时间内没有发生任何变化,我很难理解今天更新开始失败的原因。
答案 0 :(得分:0)
像artm建议我认为最可能出现的情况是数据存在问题,但一切都是正确的。我分别为每个列运行了更新,它适用于每个列。然后我运行完整的查询,它完成没有问题。我不确定最终的问题是什么,但显然它似乎再次起作用。谢谢你的意见。