如何在MySQL中使用REGEXP将全名字段拆分为名字和姓氏
MySQL正则拆分姓名字段实现方案
MySQL内置的REGEXP操作符仅返回布尔值(匹配成功返回1,失败返回0),仅用于判断是否匹配规则,无法直接提取匹配到的内容,需使用REGEXP_SUBSTR函数实现正则提取。
该方案以第一个出现的空格作为分界,适配MySQL 8.0及以上版本,符合MySQL Workbench运行环境要求:
- 第一个空格前的所有内容为FirstName,匹配正则为
^[^ ]+ - 第一个空格后的所有内容为LastName,匹配正则为
(?<= ).*$
测试示例代码
SELECT REGEXP_SUBSTR(full_name, '^[^ ]+') AS FirstName, REGEXP_SUBSTR(full_name, '(?<= ).*$') AS LastName FROM (SELECT 'Tom Della ''Angelo' AS full_name) AS test_demo;
执行后返回结果:
| FirstName | LastName |
|---|---|
| Tom | Della 'Angelo |
实际表查询用法
将上述示例中FROM后的测试子查询替换为你的业务表名,full_name替换为你存储完整姓名的字段名即可。
内容的提问来源于stack exchange,提问作者Tony Correia
相关产品推荐
相关产品推荐

