sql 根据一个表更新 另一个表的例子及可能遇到的问题

时间:2023-03-08 20:54:01
sql 根据一个表更新 另一个表的例子及可能遇到的问题

例子:

update a set a.name=b.name1 from a,b where a.id=b.id

例子延伸:更新的时候会把字符串 转为科学计数法  怎么办?

答:用 cast 转换一下 ,或者双cast

update LoaneeExpand  set LoaneeExpand.phone=cast(cast(tt.PHONE as decimal(18,0))  as  nvarchar(50))  from LoaneeExpand ,tt  where  LoaneeExpand .id=tt.id

例子再次深入延伸问题:更新时

String or binary data would be truncated.
The statement has been terminated.

字符串或二进制数据将被截断。
该语句已终止。  怎么办 ?

很明显 就是你要更新的表的 字段长度不够 , 可是查询表 b的 所有真实 长度 len(b.name) <20 .. 都符合 表a 的字段长度啊,这是为什么?

答 :更新表a时 ,并是不按照 表b的真实长度 计算的,而是按照表b字段的定义长度 ,所有把表a需要修改的字段长度,按照表b的字段长度 设定就好了。