MySQL选择带有可变空格的字符串中最后一个空格左边的所有内容

时间:2014-07-30 14:02:38

标签: mysql

我在一列中包含全名的列中发送了一些数据。问题是,有些名字的分裂非常奇怪:

John A Smith
Mary X Van Halen
A B Buckman Jr
Abby De Lucio von Garro

我真的想将它们解析为逻辑名字/姓氏字段。我用这个去除了最后一个空格后的字符串:

last_name = SUBSTRING_INDEX(full-name,' ',-1)

如何选择最后一个空格左侧的所有内容?这将使我获得我需要的98%,其余的我可以在代码中清理。例如,我想选择:

John A
Mary X Van
A B Buckman
Abby De Lucio von

解决

SUBSTRING_INDEX(fullname,' ',CHAR_LENGTH(fullname) - CHAR_LENGTH(REPLACE(fullname, ' ', '')))

1 个答案:

答案 0 :(得分:2)

在找到最后一个空格

后获取字符串长度的左侧部分
SELECT 
    LEFT(full-name, LENGTH(full-name) - LOCATE(' ', REVERSE(full-name))+1) 
FROM table;

DEMO