【问题标题】:MySQL How to order by last name on a full name field?MySQL如何在全名字段上按姓氏排序?
【发布时间】:2016-05-13 13:52:29
【问题描述】:

我有一个 SQL 表,其中有一个名为 full name 的列,其中包含“John Doe”

如何按全名列中出现的姓氏对数据进行排序?

对于像“John Doe Second”这样的长名称,我想按单词“Doe”对数据进行排序。

我正在使用 MySQL 数据库。

编辑:这是精确度:案例“约翰”是不可能的。我认为姓氏应该在我的字符串中的第一个空格之后。

【问题讨论】:

  • 姓氏将出现在字符串中的什么位置?在第一个空格之后,第二个空格?你应该清楚地说明这一点。
  • “比利·鲍勃·松顿”怎么样? “德雷克”呢?将全名拆分为组件根本不是一个小问题。 正确的答案是使用多列,根据需要花费尽可能多的时间来清理数据。
  • 如果你想区别对待名字和姓氏(例如排序),那么它应该是两列。一些问题名称已经被提及。还有更多。在中文名字中,例如姓氏在前。
  • 我编辑了我的帖子以提供一些精确度。我认为没有中文名称或其他任何名称,只有“经典”名称,其中可能包含“John Doe”或“John One Two”。没有别的了。
  • 如果您真的无法更改表格并且可以检测字符串中的第一个空格,请使用字符串函数查找位置并获取您感兴趣的子字符串。这是否回答了您的问题?

标签: mysql sql


【解决方案1】:

这应该可行:

SELECT * FROM some_table ORDER BY SUBSTR(Name, INSTR(Name, ' '))

【讨论】:

  • 这个回答我的问题!谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多