【问题标题】:Cannot resolve the collation conflict in Update query无法解决更新查询中的排序规则冲突
【发布时间】:2020-11-23 15:02:53
【问题描述】:

我得到了几个关于这个错误的答案,但在我的情况下没有任何效果。我有一个简单的更新查询

      update students set studentID  ='001093' where studentID ='1578093'  

当我尝试在我的 sql 数据库中更新时收到此排序规则错误:

      Cannot resolve the collation conflict between 
     "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AI" in the equal 
      to operation.

我尝试了什么

         update students set studentID COLLATE SQL_Latin1_General_CP1_CI_AS ='001093' where studentID ='1578093'  COLLATE SQL_Latin1_General_CP1_CI_AS

请帮助解决这个问题..我知道我们有足够的重复项,但没有一个解决方案对我有用

【问题讨论】:

  • 您的表是否有访问另一个表的触发器?它是否参与任何视图?
  • 不是独立的表

标签: sql sql-server database collation


【解决方案1】:

排序规则应该应用于 字符串 值,而不是列:

update students
    set studentID = '001093' COLLATE Latin1_General_CI_AI
    where studentID = '1578093' COLLATE Latin1_General_CI_AI;

【讨论】:

  • 这一项也不起作用。1 行影响消息显示但未更新..(1 行受影响)消息 468,级别 16,状态 9,行 225 无法解决“之间的排序规则冲突” SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CI_AI”中的等于操作。
  • @beginer_programer 。 . .我切换了排序规则。您需要使用表中定义的那个——错误消息并不清楚哪个是哪个。
  • 刚刚从日志中复制了错误信息..也尝试过切换但没有结果
【解决方案2】:

早安,beginer_programer。 尝试应用 COLLATE DATABASE_DEFAULT:

   Update students
   SET studentID  ='001093' collate database default
   WHERE studentID  = studentID ='1578093'  collate database default

【讨论】:

  • 我也试过这个,但我仍然收到错误。与表没有依赖关系
  • 请运行此查询并告诉结果:SELECT SERVERPROPERTY ('Collat​​ion')
  • Latin1_General_CI_AI --------是返回的结果。在我的 studentID 中,排序列是 SQL_Latin1_General_CP1_CI_AS
  • SELECT col.name, col.collat​​ion_name FROM sys.columns col WHERE object_id = OBJECT_ID('StudentId')----这里是学生id列,collat​​ion是SQL_Latin1_General_CP1_CI_AS
  • 我已更改查询,请重试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 2016-01-04
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多