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

MS SQL Server 2019提取括号内昵称并拆分无昵称完整姓名求助

SQL Server 2019 人员姓名拆分实现方案

以下代码可以同时满足你两个需求,同时修复了原昵称提取逻辑的边界问题:无括号、括号内无有效字母、括号位置异常等场景都会返回符合预期的结果。

SELECT
    PersonName AS 原姓名字段,
    -- 提取仅含字母的昵称,无有效昵称返回NULL
    CASE 
        -- 先判断是否存在有效的左右括号对
        WHEN CHARINDEX('(', PersonName) > 0 AND CHARINDEX(')', PersonName) > CHARINDEX('(', PersonName)
        THEN 
            -- 提取括号内内容后过滤只保留英文字母
            (SELECT STRING_AGG(c, '') 
             FROM STRING_SPLIT(SUBSTRING(PersonName, CHARINDEX('(', PersonName) + 1, CHARINDEX(')', PersonName) - CHARINDEX('(', PersonName) - 1), '')
             WHERE c LIKE '[a-zA-Z]')
        ELSE NULL 
    END AS NickName,
    -- 生成去掉括号及内容的完整姓名,自动合并多余空格
    TRIM(REPLACE(REPLACE(PersonName, 
        CASE 
            WHEN CHARINDEX('(', PersonName) > 0 AND CHARINDEX(')', PersonName) > CHARINDEX('(', PersonName)
            THEN SUBSTRING(PersonName, CHARINDEX('(', PersonName), CHARINDEX(')', PersonName) - CHARINDEX('(', PersonName) + 1)
            ELSE ''
        END, ''), '  ', ' ')) AS FullName
FROM dbo.Person

测试效果

对应你给出的示例数据,返回结果如下:

原PersonNameNickNameFullName
John (Johnny) HendricksJohnnyJohn Hendricks
Zekeraya (Zeke) SmithZekeZekeraya Smith
Ajamain Sterling (Aljo)AljoAjamain Sterling
Beth ()) JacksonNULLBeth Jackson

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

相关产品推荐
方舟 Agent Plan

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

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