You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:17:45