1

我有一个 sql 查询来使用临时表更新我的数据库表中的值:

Create Table #tmpTbl (Value varchar(30))
insert into #tmpTbl values ('Value1'),('Value2'),('Value3'),('Value4')

Declare @Var2 varchar (250) 
Set @Var2 = 'Variable2' 

Update DB_Table 
Set Var2 = @Var2 
where Var1 in (Select * from #tmpTbl )

drop table #tmpTbl 

我得到了错误

Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.

我尝试添加collate Latin1_General_CI_AS到我的create table声明的末尾,但错误仍然存​​在。

我该如何解决这个问题?还是有更好的方法来实现我想要做的事情?

4

1 回答 1

2

尝试这样的事情:

 UPDATE DB_TABLE 
SET    VAR2 = @Var2 
WHERE  VAR1 COLLATE DATABASE_DEFAULT IN (SELECT VALUE COLLATE DATABASE_DEFAULT 
                                         FROM   #TMPTBL) 
于 2013-08-27T11:00:38.927 回答