Search code examples
sqlmysql

How to get the last second word from String


I'm trying to split the string by Firstname, MiddleName and LastName but I'm having trouble getting the MiddleName. Here is my query:

select
  SUBSTRING_INDEX(admin, ' ', 1) as 'FirstName',
  SUBSTRING_INDEX(admin, ' ', +1) as 'MiddleName',
  SUBSTRING_INDEX(admin, ' ', -1) as 'LastName'
FROM fullname

My table

id FullName
1 Kim Paulo D. Ercillo
2 Levi T. Marquez
3 Brian W. Smiley

Desired output

FirstName Middle Name Last Name
Kim D Ercillo
Levi T Marquez
Brian W Smiley

Result I'm getting

FirstName Middle Name Last Name
Kim Kim Ercillo
Levi Levi Marquez
Brian Brian Smiley

Solution

  • select
      SUBSTRING_INDEX(admin, ' ', 1) as 'FirstName',
      TRIM(TRAILING '.' FROM SUBSTRING_INDEX(SUBSTRING_INDEX(admin, ' ', -2), ' ', 1)) as 'MiddleName',
      SUBSTRING_INDEX(admin, ' ', -1) as 'LastName'
    FROM
      fullname