修改FGYSM=a.FGYSM,但是a.FGYSM有4000个字,update完后 FGYSM只有a.FGYSM的前100个字
update MD_JMBEntry set FGYSM=a.FGYSM,FZJSM=a.FZJSM
from MD_JMBEntry a
left join K3_test.dbo.MD_JMBEntry b on a.FEntryID=b.FEntryID and a.FXMDM=b.FXMDM
应该是FGYSM的字段长度或类型不对,两者设置成一致试试
更新数据不全导致有以下情况:
1.直接执行 SQL 更新,此时SQL不会报错,数据库机制问题,可通过设置 sql_mode 更改
1.1)ANSI 模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。
1.2)TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事务时,会进行事务的回滚。
1.3)STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。
MD_JMBEntry 表的FGYSM字段跟MD_JMBEntry 表的 FGYSM字段长度类型一致么? 要不就先查出来看看结果是什么
select a.FGYSM from MD_JMBEntry a
left join K3_test.dbo.MD_JMBEntry b on a.FEntryID=b.FEntryID and a.FXMDM=b.FXMDM
两个表是镜像表,所有的约束、属性什么都是一样的。我把 FGYSM=a.FGYSM 改成了 FGYSM=(select FGYSM from K3_test.dbo.MD_JMBEntry where FEntryID=a.FEntryID)后处理成功了,按照各种测试update发现应该是联表的时候别名有长度限制,但是不知道该在怎么设置这个