sql server中varchar型处理,该怎么解决
sql server中varchar型处理
表结构:
有两个表:A(ysdzt,zt) B(ysdzt),其中ysdzt是varchar(60) zt是int,且A中数据明显多于B中
需求:
现我要更改A中zt字段,条件是ysdzt是B中的。
我用的语句是:
出现的问题大概是这样的
无法解决 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中的。
我用的语句是:
- SQL code
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 ,= 望大牛们帮忙。
------解决方案--------------------
- SQL code
update A set zt=8 where ysdbh in(select ysdbh from B with(nolock) COLLATE Chinese_PRC_CI_AS)
------解决方案--------------------
- SQL code
-->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))
------解决方案--------------------
- SQL code
update A set zt = 8 from b where ysdzt = B.ysdzt