当“全名”中包含句点时,在MySQL中按“姓氏”排序

时间:2010-02-24 21:49:36

标签: mysql sorting

我通过条件找到了这个漂亮的小订单,它很好地排序了“First Last”类型的字符串,甚至正确地处理了“First Van Damn”。

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

现在,我在那里有一些名字,比如“Alfred E. Newman”,并且希望排序能够正确地用于该名称(即它不会在E下结束)。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:9)

如果你真的想这样做,

怎么样?
RIGHT(p.name, LOCATE(' ', REVERSE(p.name)) - 1)

答案 1 :(得分:-1)

我认为你不能自动可靠地做到这一点。例如,你怎么自动告诉胡安·卡洛斯·佩雷斯继续P和Richard Milhous Nixon继续N?

你必须使用启发式和名字或类似的字典,并且在某些情况下总会失败。最好做朱丽叶所说的:处理数据以生成候选者进行审核,并将名称列分成三个(或四个)列:FirstName,MiddleInitial,LastName。