【问题标题】:How to solve collation conflict in SQL server?如何解决 SQL Server 中的排序规则冲突?
【发布时间】:2021-04-13 17:05:53
【问题描述】:

我在 SQL Server 上遇到“排序规则冲突”,我正在使用下一个代码并收到该错误:

with MESF1 as (
SELECT [Error], convert(date,[Now]) as 'Date', COUNT(*) as'Day total', sum([Delta in seconds]) as [Total in seconds]
  FROM [Consolidado-MESF1].[dbo].[MESF1_Data_Summary] A 
  Group by convert(date,[now]), [Error] 
)
 Select a.*, b.[ErrorDescription], (round(((cast(a.[Total in seconds] as numeric )/cast(a.[Day total] as numeric))),3)) 
 as 'Average cycle time' , 
 datepart(wk,a.[date]) as 'WWK',datepart(YYYY,a.[date]) as 'YYYY', datename(DW, a.[date]) as 'Day' from MESF1 a
 inner join [Consolidado-MESF1].[dbo].[MESF1_ERROR_DESCRIPTION] b on a.error = b.ErrorNumber
Union 
   Select a.*, b.[Item Type Description], (round(((cast(a.[Total in seconds] as numeric )/cast(a.[Day total] as numeric))),3)) 
   as 'Average cycle time' , 
 datepart(wk,a.[date]) as 'WWK',datepart(YYYY,a.[date]) as 'YYYY', datename(DW, a.[date]) as 'Day' from MESF1 a
 inner join [ProductList].[dbo].[Prodinfo] b on a.error = b.[FG OPC] collate SQL_latin1_general_cp1_ci_as
--date period YYYY-MM-DD
--where [date] between '2020-06-06' and '2020-08-06'
  order by a.[Date] asc;
---------------------------------------------------------------------------------------------------
End

显示的错误是:

消息 468,第 16 级,状态 9,第 103 行 无法解决等于操作中“SQL_Latin1_General_CP1_CI_AS”和“Modern_Spanish_CI_AS”之间的排序规则冲突。

我已经尝试在设计菜单中从 Windows 排序规则更改为 SQL 排序规则和下一个查询:

ALTER table [dbo].[MESF1_ERROR_DESCRIPTION]
ALTER COLUMN [ErrorDescription]
VARCHAR(max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL

感谢大家的帮助。

【问题讨论】:

  • 其他连接列呢,它们的排序规则是什么?遍历所有列,您在某处不匹配

标签: sql-server collation


【解决方案1】:

使用

整理数据库_DEFAULT

而不是

整理 SQL_latin1_general_cp1_ci_as

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 2012-01-21
    • 2016-01-04
    • 1970-01-01
    • 2011-05-06
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多