Sql server Sql Server-使用排序规则

Sql server Sql Server-使用排序规则,sql-server,collation,Sql Server,Collation,我正在使用下面的查询,其中我需要指定排序提示,以避免跨数据库的排序问题,因为此查询使用来自2个数据库的表 Msg 468,级别16,状态9,第12行无法解析排序规则 中“拉丁语通用”与“拉丁语通用”的冲突 这等于操作 当前,当我运行一些使用不同排序规则的不同数据库的查询时,我遇到上述排序规则冲突错误: Delete from table1 where oldcolumn in ( select newcolumn from Database2.dbo.table2 where invoiceid

我正在使用下面的查询,其中我需要指定排序提示,以避免跨数据库的排序问题,因为此查询使用来自2个数据库的表

Msg 468,级别16,状态9,第12行无法解析排序规则 中“拉丁语通用”与“拉丁语通用”的冲突 这等于操作

当前,当我运行一些使用不同排序规则的不同数据库的查询时,我遇到上述排序规则冲突错误:

Delete from table1 where oldcolumn in
(
select newcolumn from Database2.dbo.table2
where invoiceid = @invno
and complete = 0
)
我将查询更改为包含排序规则提示,如下所示:

Delete from table1 where oldcolumn COLLATE SQL_Latin1_General_CP1_CS_AS in
(
select newcolumn from Database2.dbo.table2
where invoiceid = @invno
and complete = 0
)
  • 上述查询能否解决排序问题
  • 在运算符的左侧或右侧指定collate提示是否相同(例如“=”运算符)
  • invoiceid=@invno
    这样的查询是否可以生成运行时排序规则冲突错误
  • 注意:我问这个问题是因为我无法访问上述两个数据库中的任何一个,脚本将在实际数据库上运行。

    使用以下查询:

    DELETE FROM Table1
    WHERE Table1.ID IN (
                    SELECT Table1.ID
                    FROM Table1
                    INNER JOIN Database2.dbo.Table2 Table2 ON Table2.NewColumn = Table1.OldColumn COLLATE SQL_Latin1_General_CP1_CS_AS
                    WHERE   Table2.invoiceid = @invno
                        AND Table2.complete = 0
                    )
    

    您忘记描述您现在遇到的“排序问题”。您是否收到错误消息、错误结果或什么?我收到排序规则冲突的运行时错误。我更新了问题。您忘记发布错误消息。哪列有哪种排序规则?当从
    表2
    返回
    newcolumn='résumé
    或反之亦然时,是否需要删除
    oldcolumn='resume'
    。我现在只关心运行时错误。