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

如何提取字符串中第3个与第4个空格之间的内容

固定前缀后指定分隔段提取方案

已知所有待处理字符串均包含固定前缀XPTOP XPTOP,需提取全字符串第3个与第4个空格之间的内容,不受目标内容长度影响,不同场景的稳定实现方案如下:

SQL 场景

针对此前用charindex出错的问题,优化后的索引定位写法如下,可避免截断或多取字符:

SELECT SUBSTRING(
    待处理字段名,
    -- 定位第3个空格位置,向后偏移1位作为截取起点
    CHARINDEX(' ', 待处理字段名, CHARINDEX(' ', 待处理字段名, CHARINDEX(' ', 待处理字段名) + 1) + 1) + 1,
    -- 计算第3、4个空格之间的长度作为截取长度
    CHARINDEX(' ', 待处理字段名, CHARINDEX(' ', 待处理字段名, CHARINDEX(' ', 待处理字段名, CHARINDEX(' ', 待处理字段名) + 1) + 1) + 1) 
    - CHARINDEX(' ', 待处理字段名, CHARINDEX(' ', 待处理字段名, CHARINDEX(' ', 待处理字段名) + 1) + 1) 
    - 1
) AS 提取结果
FROM 表名

如果使用支持拆分函数的高版本数据库,写法可简化:

  • SQL Server 2016+:
SELECT value AS 提取结果
FROM 表名
CROSS APPLY STRING_SPLIT(待处理字段名, ' ', 1)
WHERE ordinal = 3
  • MySQL 8.0+:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(待处理字段名, ' ', 3), ' ', -1) AS 提取结果
FROM 表名

Python 场景

单字符串处理

input_str = "XPTOP XPTOP 4WS00632 BLACK VERNIS"
target = input_str.split()[2]

Pandas 批量处理

import pandas as pd
df['提取结果'] = df['待处理列名'].str.split().str[2]

Excel 场景

待处理内容存放在A1单元格时,公式如下:

=TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))), 2*LEN(A1)+1, LEN(A1)))

内容的提问来源于stack exchange,提问作者António Miranda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 00:15:05