sql-server - SQL Server - 使用排序规则

标签 sql-server collation

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

Msg 468, Level 16, State 9, Line 12 Cannot resolve the collation conflict between "Latin1_General_CS_AI" and "Latin1_General_CS_AS" in the equal to operation.

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

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
)
  1. 上面的查询能解决排序问题吗?
  2. 在运算符(例如“=”运算符)的左侧或右侧指定整理提示是否相同?
  3. invoiceid = @invno 这样的查询是否会产生运行时整理冲突错误?

注意:我问这个问题是因为我无权访问上述 2 个数据库中的任何一个,脚本将在实际数据库上运行。

最佳答案

使用下面的查询:

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
                )

关于sql-server - SQL Server - 使用排序规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880200/

相关文章:

MySQL 全文搜索、整理和不间断空格

utf-8 - 将 SQL Server 2008 R2 的编码(排序规则?)更改为 UTF-8

mysql - 检查输入字符串是否符合数据库排序规则

sql - 如何按月份和业务区域只选择最终值?

php - 在 WordPress 和 SQL 查询之间注入(inject)中间件的最佳方法是什么

sql-server - SQL Alchemy 检查连接

sql-server - 如何在 transact sql 中执行相当于 "#define SomeValue 5"的操作?

mysql - 什么时候使用 utf8mb4(bin、general_ci、unicode_520_ci)?

mysql - 如何在mysql中获取首字母大写小写的数据?

sql-server - 根据同一列的先前值更新行。 (MSSQL2008)