与临时表中的列进行比较时 SQL 排序规则冲突

标签 sql collation

我有一个 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.

我怎样才能解决这个问题? (不更改数据库)

更新:即使我删除了最后一个像(字符串比较),我也会收到此错误...

最佳答案

好像是你的 idVARCHAR s 具有不同的排序规则。

尝试这个:

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'

关于与临时表中的列进行比较时 SQL 排序规则冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1404880/

相关文章:

oracle - 使用 linq toEntity (EF) 和 Oracle 12.1 忽略搜索重音

mysql - Doctrine 忽略数据库的字符集和排序规则

php - 将行与 mysql 中的最新日期连接起来

mysql - MySQL中的 "VARCHAR BINARY"和 "VARBINARY"有什么区别?

sql-server - SQL Server 不区分大小写的查询

mysql - 为什么 DISTINCT 使这个查询比没有 DISTINCT 花费的时间长 10 倍?

sql-server - 无法解决等于操作中 "SQL_Latin1_General_Pref_CP1_CI_AS"和 "Latin1_General_CI_AS"之间的排序规则冲突

mysql - INSERT ... ON DUPLICATE UPDATE - 锁定等待超时

mysql - 在每组行中执行操作

sql - 将一对多关系中的每条记录放在一行中