【问题标题】:Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation无法解决等于操作中“Latin1_General_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突
【发布时间】:2011-03-03 07:43:49
【问题描述】:
public List<EmployeesX> GetView()
{
   Health_Scheme_System.Health_Scheme_SystemDB db = new Health_Scheme_System.Health_Scheme_SystemDB();

   var d = from empView in db.EmployeeDirectories
           join empTable in db.Employees on empView.ID_NO equals empTable.EmployeeIDCard 
           join s in db.Schemes on empTable.SchemeID equals s.SchemeID 
           select new EmployeesX {ID_NO = empView.ID_NO, FIRST_NAME = empView.FIRST_NAME, LAST_NAME = empView.LAST_NAME, EMPLOYMENT_DATE = ((DateTime)empView.EMPLOYMENT_DATE).Date, TERMINATION_DATE = ((DateTime)empView.TERMINATION_DATE).Date, LOCATION_CODE = empView.LOCATION_CODE };
           return d.ToList<EmployeesX>();
}

【问题讨论】:

标签: sql subsonic subsonic3


【解决方案1】:

排序规则是指用于在文本字段中存储数据的字符集,它是为世界上所有多种书面语言提供支持所必需的。每列都可以定义一个特定的排序规则,或者继承数据库的排序规则。当比较具有不同排序规则的列时,您可能会遇到麻烦,因为一个排序规则中的字符不一定等同于另一个排序规则中的相同字符。

  1. 此比较中的列有不同的排序规则:

    empView.ID_NO 等于 empTable.EmployeeIDCard

  2. 或者,此比较中的列具有不同的排序规则:

    empTable.SchemeID 等于 s.SchemeID

因此,您需要更改排序规则,以便它们在您的数据库架构上相同:

ALTER TABLE MyTable ALTER COLUMN CharCol
            varchar(10)COLLATE Latin1_General_CI_AS NOT NULL

或者您可以将collate database default 添加到底层sql 中的每个比较中。

【讨论】:

  • 感谢伙伴的帮助 :) 你太棒了!!
  • @Malcolm - 不客气。如果这回答了您的问题,那么您可以将答案标记为“已接受”。然后它会有一个大的绿色勾号,以便其他有相同问题的人可以看到解决方案。
猜你喜欢
  • 2010-12-09
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 2011-01-04
  • 2018-10-20
相关资源
最近更新 更多