表结构:
有两个表:A(ysdzt,zt) B(ysdzt),其中ysdzt是varchar(60) zt是int,且A中数据明显多于B中
需求:
现我要更改A中zt字段,条件是ysdzt是B中的。
我用的语句是:
update A set zt=8 where ysdbh in(select ysdbh from B with(nolock))
出现的问题大概是这样的
无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AI" 之间的排序规则冲突。好像int型数据才可以那样,小弟不知道varchar以及nvarchar要怎么比较 in ,not in ,= 望大牛们帮忙。
有两个表:A(ysdzt,zt) B(ysdzt),其中ysdzt是varchar(60) zt是int,且A中数据明显多于B中
需求:
现我要更改A中zt字段,条件是ysdzt是B中的。
我用的语句是:
update A set zt=8 where ysdbh in(select ysdbh from B with(nolock))
出现的问题大概是这样的
无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AI" 之间的排序规则冲突。好像int型数据才可以那样,小弟不知道varchar以及nvarchar要怎么比较 in ,not in ,= 望大牛们帮忙。
排序规则的问题
-->try
update A set zt=8 where ysdbh COLLATE Chinese_PRC_CI_AS in(select ysdbh from B with(nolock))
--or
update A set zt=8 where ysdbh COLLATE Chinese_PRC_CI_AI in(select ysdbh from B with(nolock))
update A
set zt = 8
from b
where ysdzt = B.ysdzt
如果修改为以下的话,
update A
set zt = 8
from A,B
where A.ysdzt = B.ysdzt
则又出现老问题“无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AI" 之间的排序规则冲突”了。
update A
set zt = 8
from b
where ysdzt COLLATE Chinese_PRC_CI_AS= B.ysdzt COLLATE Chinese_PRC_CI_AS