MySQL中如何为NameTable表添加FullNameReverseOrder列并反转姓名顺序
实现姓名反转列的完整SQL方案
1. 先添加新列
执行以下语句完成列的创建:
ALTER TABLE NameTable ADD COLUMN FullNameReverseOrder VARCHAR(100) AFTER FullName;
2. 更新列数据(通用方案)
使用字符串拆分与拼接函数,将「名 姓」格式转换为「姓 名」:
UPDATE NameTable SET FullNameReverseOrder = CONCAT( SUBSTRING_INDEX(FullName, ' ', -1), -- 提取姓(空格分隔的最后一段) ' ', SUBSTRING_INDEX(FullName, ' ', 1) -- 提取名(空格分隔的第一段) );
3. 进阶:自动维护的生成列(可选)
如果你的数据库支持生成列(如MySQL 5.7+、PostgreSQL 12+),可以创建自动计算的列,后续FullName更新时,该列会自动同步:
MySQL 版本
ALTER TABLE NameTable ADD COLUMN FullNameReverseOrder VARCHAR(100) GENERATED ALWAYS AS ( CONCAT(SUBSTRING_INDEX(FullName, ' ', -1), ' ', SUBSTRING_INDEX(FullName, ' ', 1)) ) STORED AFTER FullName;
PostgreSQL 版本
ALTER TABLE NameTable ADD COLUMN FullNameReverseOrder VARCHAR(100) GENERATED ALWAYS AS ( CONCAT(split_part(FullName, ' ', 2), ' ', split_part(FullName, ' ', 1)) ) STORED;
关键函数说明
SUBSTRING_INDEX(str, delim, count):按分隔符拆分字符串,count=-1取最后一段,count=1取第一段split_part(str, delim, n):PostgreSQL中按分隔符取第n段字符串CONCAT():将多个字符串拼接为一个
内容的提问来源于stack exchange,提问作者Nabeel
相关产品推荐
相关产品推荐

