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

如何在MySQL中查询并获取姓名的姓与名首字母缩写

MySQL 姓名缩写提取实现方法

假设你的people表存储姓名的字段为full_name,且姓名统一为「名 姓」用单个空格分隔的格式,可直接用以下查询实现需求:

SELECT
  CONCAT(
    LEFT(full_name, 1),
    '.',
    LEFT(SUBSTRING_INDEX(full_name, ' ', -1), 1),
    '.'
  ) AS name_abbreviation
FROM people;

逻辑说明

  • LEFT(full_name, 1):提取完整姓名的第一个字符,即名的首字母
  • SUBSTRING_INDEX(full_name, ' ', -1):按空格切割姓名字符串,取最后一段的完整姓氏内容
  • LEFT(SUBSTRING_INDEX(full_name, ' ', -1), 1):提取姓氏的首字母
  • CONCAT函数将两段首字母和英文句号拼接,得到要求的缩写格式

常见问题排查

如果之前执行语句返回完整姓名,通常是两个原因:

  • 未做首字母拼接,直接返回了原full_name字段
  • 姓名存在多个连续空格、前后空格的情况,导致切割逻辑失效,可先做字段清洗再提取:
SELECT
  CONCAT(
    LEFT(clean_name, 1),
    '.',
    LEFT(SUBSTRING_INDEX(clean_name, ' ', -1), 1),
    '.'
  ) AS name_abbreviation
FROM (
  -- 先清洗姓名:去除前后空格,将多个连续空格替换为单个
  SELECT REPLACE(TRIM(full_name), '  ', ' ') AS clean_name FROM people
) AS t;

含中间名的扩展场景

如果姓名包含中间名(如John Allen Dow要得到J.A.D),可结合递归CTE实现,大部分常规场景下上述两段式提取逻辑即可覆盖需求。

内容的提问来源于stack exchange,提问作者Odez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:36:05