一尘不染

将值从一个字段拆分为两个

mysql

我有一个表字段membername,其中包含用户的姓氏和名字。是否有可能分裂成那些2场memberfirstmemberlast

所有记录的格式均为“名字的姓氏”(不带引号,中间还有空格)。


阅读 320

收藏
2020-05-17

共1个答案

一尘不染

不幸的是,MySQL没有分割字符串功能。但是,您可以为此创建一个用户定义的函数,例如以下文章中描述的函数

使用该功能:

DELIMITER $$

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255) DETERMINISTIC
BEGIN 
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');
END$$

DELIMITER ;

您将可以按照以下方式构建查询:

SELECT SPLIT_STR(membername, ' ', 1) as memberfirst,
       SPLIT_STR(membername, ' ', 2) as memberlast
FROM   users;

如果您不想使用用户定义的函数,并且不介意查询更加冗长,则还可以执行以下操作:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 1), ' ', -1) as memberfirst,
       SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 2), ' ', -1) as memberlast
FROM   users;
2020-05-17