Mysql 在同一SQL.Server上跨2个数据库连接时比较问题

Mysql 在同一SQL.Server上跨2个数据库连接时比较问题,mysql,sql-server,database,collate,Mysql,Sql Server,Database,Collate,我不断地发现这个错误: 无法解决“Latin1\u General\u BIN”之间的排序规则冲突 和“SQL拉丁通用CP1 CI_AS”中的“等于”运算 我不知道如何修理它 通过连接两个数据库中具有不同名称的列,我可以跨同一服务器上的两个不同数据库进行连接 SELECT t1.ColumnNameDB1, t2.ColumnNameDB2 FROM DB1.schema.TableName AS t1 INNER JOIN DB2.schema.TableName as t2 ON t1.Co

我不断地发现这个错误:

无法解决“Latin1\u General\u BIN”之间的排序规则冲突 和“SQL拉丁通用CP1 CI_AS”中的“等于”运算

我不知道如何修理它

通过连接两个数据库中具有不同名称的列,我可以跨同一服务器上的两个不同数据库进行连接

SELECT t1.ColumnNameDB1, t2.ColumnNameDB2
FROM DB1.schema.TableName AS t1
INNER JOIN DB2.schema.TableName as t2
ON t1.ColumnNameDB1 =  t2.ColumnNameDB2

我正在绞尽脑汁试图找出我做错了什么。

您可以尝试在连接级别显式指定排序规则

SELECT t1.ColumnNameDB1, t2.ColumnNameDB2
FROM DB1.schema.TableName AS t1
INNER JOIN DB2.schema.TableName as t2
ON t1.ColumnNameDB1 =  LTRIM(RTRIM(t2.ColumnNameDB2)) COLLATE SQL_Latin1_General_CP1_CI_AS 
使用以下命令:

SELECT t1.ColumnNameDB1,
 t2.ColumnNameDB2 FROM
 DB1.schema.TableName AS t1 INNER JOIN
 DB2.schema.TableName as t2 ON
 t1.ColumnNameDB1 Collate database_default =
 t2.ColumnNameDB2 collate database_default

请您向我解释一下校对的含义,以及LTRIM和RTRIM命令。SQL Server中的校对定义了如何对字符串值进行排序和比较。它定义了如何处理不同的重音、区分大小写、上下文、ASCII排序或UNICODE。对于上面的特定排序规则,其含义如下:。此外,RTRIM和LTRIM函数用于删除字符串值中的任何尾随空格和前导空格。例如,假设您的字段有一个值=`Test',在这种情况下,LTRIM将删除前导空格,而RTRIM将删除尾随空格,这将返回一个值=
Test
。希望有帮助!:)是否有其他版本或一套collate规格可供我使用?当然,这取决于您的需要。以下是您可以从中选择的不同类型的排序规则: