2013-08-27 142 views
1

我有一個SQL查詢中使用臨時表來更新我的數據庫表中的值: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聲明結束,但錯誤仍然存​​在。

我該如何解決這個問題?還是有更好的方法來實現我想要做的?

回答

2

嘗試這樣:

UPDATE DB_TABLE 
SET VAR2 = @Var2 
WHERE VAR1 COLLATE DATABASE_DEFAULT IN (SELECT VALUE COLLATE DATABASE_DEFAULT 
             FROM #TMPTBL) 
+0

謝謝你的解決方案。它工作得很好! –

+0

@AlexisHong,歡迎您:-D 如果它適合您,您可以請「接受」我的回答嗎? – Gidil