15

データベース内の値を定数と比較するSQLクエリがあります。

SELECT * FROM my_table
INNER JOIN #TempTable tem
    ON my_table.id = temp.id
    AND my_table.key = 'SOME STRING'

そして、私はエラーを受け取ります:

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

どうすればこれを回避できますか?(データベースに変更を加えることなく)

更新:最後のlike(文字列比較)を削除しても、このエラーが発生します...

4

4 に答える 4

19

あなたidのはVARCHAR異なる照合を持っているようです。

これを試して:

SELECT  *
FROM    my_table
INNER JOIN
        #TempTable tem
ON      my_table.id = temp.id COLLATE SQL_Latin1_General_CP1_CI_AS
        AND my_table.key = 'SOME STRING'
于 2009-09-10T12:11:48.463 に答える
5

一時テーブルの宣言内で照合を指定します。

CREATE TABLE #TempTable (ID NVARCHAR(255) COLLATE database_default)
于 2009-09-10T12:12:09.350 に答える
2

問題は一時テーブルです。tempdbの照合を使用します。

一時テーブルではなく実際のデータベースにテーブルを作成すると、同じ照合が行われます。または、一時テーブルの作成時に照合を指定します。

于 2009-09-10T12:12:24.893 に答える
1

試す

SELECT * FROM my_table
INNER JOIN #TempTable temp    
    ON my_table.id = temp.id collate database_default
    AND my_table.key = 'SOME STRING'
于 2009-09-10T12:17:48.280 に答える