日期:2014-05-17  浏览次数:20469 次

sql server中varchar型处理
表结构:
  有两个表: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