使用多个分隔符拆分名称列

时间:2014-03-12 16:14:05

标签: mysql sql parsing text-parsing

我正在尝试将格式为fullname的名称列(lastname, firstname)拆分为MySQL中的两个单独列:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ',', 1), ' ', -1) as firstname, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ',', 2), ' ', -1) as lastname FROM tablename;

这适用于大多数名称。但是,像“Del Torres Jr,Marcelo”这样的名字显示为

--------------------
lastname | firstname
--------------------   
JR       | Marcelo  
--------------------

如何更改我的语句以捕获逗号后的所有名称?

2 个答案:

答案 0 :(得分:1)

你能不能只使用:

SELECT SUBSTRING_INDEX(fullname, ',',  1) AS firstname 
      ,SUBSTRING_INDEX(fullname, ',', -1) AS lastname
FROM table

SQLFiddle

我无法告诉您对' '的匹配尝试了什么,但如果您只想修剪空格,则可以对这些值使用TRIM()

答案 1 :(得分:0)

这就是你想要的吗?

  SELECT  
      SUBSTRING_INDEX(value, ' ,', 1) as lastname ,
      SUBSTRING_INDEX(value, ' ,', -1) as firstname
  FROM event;

demo

在您的查询中,您应该将-1更改为1

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,',', 1),' ', -1) as firstname, 
       SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,',', 2),' ', 1) as lastname 
                                                             ^--this should be 1
FROM tablename;