将全名拆分为 SQL 内的三个变量

Splitting a full name into three variables within SQL

我有以下table结构

FirstName                Surname
Joe Jay Blog             Pepper
Jane Jay Bibs            Salt
Jim Jack Jones Snr       Sugar

我想做的是获取名字中的值并将第一个 space 之前的所有内容都放入 "first",第一个和第二个 space 之间的所有内容并移动它到 "middle" 以及 "end".

中第 3 个 space 之后的所有内容

所以对于我的最后一条记录:

first = Jim
second = Jack
third = Jones Snr

我可以通过以下方式满足我的第一个要求:

SELECT SUBSTR(FirstName, 1,LOCATE(' ',FirstName)) AS first

但这似乎和我现在一样公平。 谢谢!

这似乎有效:P

首先获取名字并将中间名+姓氏分组,然后对结果再次执行相同操作以获取中间名 LEFT 和姓氏右侧

SELECT
  name, 
  firstname, /*already got this one*/
  LEFT(middle_last_name, INSTR(middle_last_name, ' ')-1) AS middlename, /*do the same LEFT to get middlename*/
  RIGHT(middle_last_name, LENGTH(middle_last_name)-INSTR(middle_last_name, ' ')) AS last_name /*get the remaining chars for lastname*/
FROM (

    SELECT *, 
    LEFT(name, INSTR(name, ' ')-1) AS firstname, /*Simply get the firstname with left*/
    RIGHT(name, LENGTH(name)-INSTR(name, ' ')) AS middle_last_name /*group the rest for this sub-query*/
    FROM users
    );