将全名拆分为 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
);
我有以下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
);