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

SQL动态拆分字符串:适配含不同数量'-'分隔符的场景需求

SQL按'-'拆分Name列适配所有场景的解决方案

需求说明

现有数据表包含Name列,需按-分隔符拆分得到指定的Required Output列,示例如下:

NameRequired Output
itim-connect-prdCONNECT
WHATS-PRDWHATS
Commitment-FinOpsCOMMITMENT
itim-xbl-hmlXBL
itim-audit-hmlAUDIT
BSC-AWS-Accounts-RootsAWS

原有脚本问题

当前使用的SQL脚本仅支持包含至少两个-的场景,无法处理仅含一个-的情况(如Commitment-FinOps、WHATS-PRD):

UPPER(SUBSTRING(SUBSTRING([Name],CHARINDEX('-',[Name])+1,CHARINDEX('-', [Name], CHARINDEX('-', [Name]) + 1)),1,CHARINDEX('-',SUBSTRING([Name],CHARINDEX('-',[Name])+1,CHARINDEX('-', [Name], CHARINDEX('-', [Name]) + 1)))-1)) AS [Required Output]

修改后的适配脚本

以下脚本通过判断Name中-的数量,分别处理单分隔符和多分隔符场景,完美适配所有示例情况:

UPPER(
    CASE 
        -- 仅含一个'-'时,取分隔符左侧内容
        WHEN LEN([Name]) - LEN(REPLACE([Name], '-', '')) = 1 THEN
            LEFT([Name], CHARINDEX('-', [Name]) - 1)
        -- 含两个及以上'-'时,取第一个与第二个'-'之间的内容
        ELSE
            SUBSTRING(
                [Name],
                CHARINDEX('-', [Name]) + 1,
                CHARINDEX('-', [Name], CHARINDEX('-', [Name]) + 1) - CHARINDEX('-', [Name]) - 1
            )
    END
) AS [Required Output]

核心逻辑

  • 统计分隔符数量:用LEN([Name]) - LEN(REPLACE([Name], '-', ''))计算Name中-的总个数
  • 单分隔符场景:直接截取-左侧的字符串,匹配示例中WHATS-PRD→WHATS、Commitment-FinOps→COMMITMENT的规则
  • 多分隔符场景:提取第一个-之后、第二个-之前的子串,匹配示例中itim-connect-prd→CONNECT、BSC-AWS-Accounts-Roots→AWS的规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:40:29