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

如何使用REVERSE与CHARINDEX函数提取姓名中的姓氏?

提取姓氏的SQL解决方案

核心逻辑

你已经找对了关键节点:用CHARINDEX(' ', REVERSE(Name))定位反转后姓名里第一个空格的位置,这个数值恰好是原姓名中姓氏的长度 + 1。接下来只需要两步就能拿到正常顺序的姓氏:

  1. 从反转后的姓名里截取到该空格前的片段(也就是反转状态的姓氏)
  2. 将截取结果再次反转,恢复姓氏的正常顺序

完整SQL代码

SELECT 
    Name,
    REVERSE(SUBSTRING(REVERSE(Name), 1, CHARINDEX(' ', REVERSE(Name)) - 1)) AS LastName
FROM YourTableName;

代码拆解

  • REVERSE(Name):把原姓名反转,比如John Michael Smith会变成htimS leahciM nhoJ
  • CHARINDEX(' ', REVERSE(Name)):找到反转后第一个空格的位置,这里是5(对应htimS后的空格)
  • SUBSTRING(REVERSE(Name), 1, CHARINDEX(' ', REVERSE(Name)) - 1):从反转字符串的第1位开始,截取长度为5-1=4的字符,得到htimS
  • REVERSE(...):把htimS反转回原姓氏Smith

测试示例

原姓名提取结果
John DoeDoe
Emily Marie JohnsonJohnson
Robert BrownBrown

边界情况优化

如果存在单名(无空格)的情况,上面的代码会报错,可加判断处理:

SELECT 
    Name,
    CASE 
        WHEN CHARINDEX(' ', Name) = 0 THEN Name
        ELSE REVERSE(SUBSTRING(REVERSE(Name), 1, CHARINDEX(' ', REVERSE(Name)) - 1))
    END AS LastName
FROM YourTableName;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:45:30