我有以下每晚运行的更新查询,它将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我尝试过将数字字段转换为数字字段,但没有成功。我感到困惑的是,为什么更新在今天就开始失败了,因为数据库结构已经很长一段时间没有改变了。
发布于 2015-05-14 19:38:44
正如artm所说,我认为最有可能的情况是数据有问题,但一切都是正确的。我分别运行了每一列的更新,并且对每一列都有效。然后我运行了完整的查询,它没有问题地完成了。我不知道最后的问题是什么,但显然它似乎又起作用了。我感谢你的意见。
https://stackoverflow.com/questions/30238564
复制相似问题