【问题标题】:Sorting by "last name" in MySQL when "full name" has periods in it当“全名”中有句点时,在 MySQL 中按“姓氏”排序
【发布时间】:2011-01-20 18:03:27
【问题描述】:

我发现这个按条件排序的漂亮小顺序可以很好地对“First Last”类型的字符串进行排序,甚至可以正确处理“First Van Damn”。

"SUBSTRING(p.name, LOCATE(' ', p.name) +1)

现在,我在其中有一些名字,例如“Alfred E. Newman”,并希望该名称的排序能够正常工作(即它不会在 E 下结束)。

任何帮助将不胜感激。

【问题讨论】:

  • 你有“Alfred E. Newman”,但没有“Richard Milhous Nixon”?
  • 在这种情况下,我们正在与棒球运动员打交道,所以我想它也需要让“Juan Carlos Perez”使用一个人为的例子,在 P 下排序
  • 是否有机会通过添加真正的 FirstName、MiddleInitial 和 LastName 列来清理数据库?从那里,您的 Name 列可以是基于其他三个的计算字段。

标签: mysql sorting


【解决方案1】:

如果你真的想做,怎么样

RIGHT(p.name, LOCATE(' ', REVERSE(p.name)) - 1)

【讨论】:

    【解决方案2】:

    我认为您无法自动可靠地执行此操作。例如,您如何自动判断 Juan Carlos Perez 选择 P 而 Richard Milhous Nixon 选择 N?

    您必须使用启发式算法和名称字典或类似的东西,而且在某些情况下总是会失败。最好按照 Juliet 说的去做:处理数据以生成待审核的候选人,并将名称列分成三(或四)列:FirstName、MiddleInitial、LastName。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多