zoukankan      html  css  js  c++  java
  • 无法解决 equal to 操作中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。

    一个旧有系统需要从另一个新系统获取数据。由于两个系统数据库的的排序规规则不同。在存储过程中SELECT数据时,引发了“无法解决 equal to 操作中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。”错误。参考截图两个数据的排序规则:

    Insus.NET没有尝试去更新数据库的collation排序规则,担心会对其它数据的影响。但是问题出现了,还是需要想办法去解决的。

    在有问题的存过程中,写一个与目标表结构相同的临时表,在设计临时表,在出现问题的字段加上与数据源表的排序规则。如:

    View Code
    IF OBJECT_ID('dbo.#CS'IS NOT NULL
            DROP TABLE dbo.#CS    
        CREATE TABLE  dbo.#CS 
        (      
            [Item] NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
            [Description] NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
            [Quantity] DECIMAL(18,6),        
            [U/M] NVARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AS
        )     

    上面的创建临时表的SQL中,[Item],[Description]以及[U/M]都加上COLLATE SQL_Latin1_General_CP1_CI_AS

    然后把SELECT的数据INSERT INTO至这个临时表。

    问题就可以解决了。

  • 相关阅读:
    HDU 1010 Tempter of the Bone
    HDU 4421 Bit Magic(奇葩式解法)
    HDU 2614 Beat 深搜DFS
    HDU 1495 非常可乐 BFS 搜索
    Road to Cinema
    Sea Battle
    Interview with Oleg
    Spotlights
    Substring
    Dominating Patterns
  • 原文地址:https://www.cnblogs.com/insus/p/2327845.html
Copyright © 2011-2022 走看看