【问题标题】:Cannot resolve the collation conflict in my query无法解决我的查询中的排序规则冲突
【发布时间】:2014-11-26 08:46:38
【问题描述】:

我正在尝试选择一个视图并将其与 SQL Server 2012 中的另一个表进行内部连接,但它显示此错误

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

这是我的查询:

SELECT 
    vpr.PARTNUMBER, vpr.DESCRIPTION, 
    vpr.BUYER, vpr.[GL CLASS], vpr.[ABC CODE], 
    vpr.TODAY, vpr.DAY1, vpr.DAY2, vpr.DAY3, vpr.DAY4, vpr.DAY5, 
    vpr.[COO QTY], 
    ROUND(vpr.[QOH-MSTORE], 0) AS [QOH-MSTORE], 
    vpr.[QOH-COO], vpr.[QOH-SDV], 
    ABS(ROUND(vpr.TOPUPQTY, 0)) AS [TOPUPQTY],
    (CASE 
        WHEN ABS(ROUND(vpr.TOPUPQTY, 0)) < vpr.[QOH-SDV] THEN ABS(ROUND(vpr.TOPUPQTY, 0))
        WHEN ABS(ROUND(vpr.TOPUPQTY, 0)) >= vpr.[QOH-SDV] THEN vpr.[QOH-SDV]
     END) AS [SDV TO PICK]
FROM 
    vw_PartsReport vpr
LEFT JOIN
    (SELECT twudc.Description1 
     FROM tbl_WH_UserDefineCodes twudc
     WHERE twudc.UserDefineCodes = 'SO'
     GROUP BY twudc.Description1) AS [SOI] ON vpr.PARTNUMBER = Description1
WHERE 
    vpr.TOPUPQTY <= 0

有人可以告诉我我的查询有什么问题吗?谢谢

【问题讨论】:

  • 您正在尝试比较两种不同排序规则类型的字符串。您需要明确声明要在 equals 操作中使用的排序规则,例如SomeColumn = SomeOtherColumn COLLATE SQL_Latin1_General_CP1_CI_AS。如果您双击 SSMS 中的错误消息,它应该会将您带到有问题的行。
  • 是的 GarethD,当我双击错误时,它会将我带到“AS [SOI] ON vpr.PARTNUMBER = Description1”。对于“vpr.PARTNUMBER”是(nvarchar,not null)和“Description1”是(nvarchar,null),那么基于此我该如何解决它?

标签: sql sql-server-2012


【解决方案1】:

所以要么是

on vpr.PARTNUMBER collate Latin1_General_CI_AI = Description1

on vpr.PARTNUMBER  = Description1 collate Latin1_General_CI_AI

取决于哪个是哪个排序规则。尝试一个,如果不正确尝试另一个,所需的信息不在您的帖子中告诉您它是哪一个。

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多