如何在SQL中提取第二个冒号(:)之前的文本?
提取第二个冒号之前的字符串的实现方法
给定原始字段内容:
ss pullover jaq:rwbwht:40 ribbed cttn 5608:navy:10.5 shorts:black:xl s:pigment wash mushroom:l t tote bag:mushroom:1size
需要提取第二个:之前的内容,得到目标结果:
ss pullover jaq:rwbwht ribbed cttn 5608:navy shorts:black s:pigment wash mushroom t tote bag:mushroom
以下是几种不同场景下的实现方案:
Excel/Google Sheets 实现
使用LEFT+FIND组合函数,定位第二个冒号的位置后截取内容:
=LEFT(A1, FIND(":", A1, FIND(":", A1)+1)-1)
- 内层
FIND(":", A1)找到第一个冒号的位置,加1后作为外层FIND的起始搜索点,精准定位第二个冒号 LEFT从字符串开头截取到第二个冒号的前一位,得到目标内容
正则表达式实现(通用工具/编程语言)
文本编辑器(如Notepad++)替换操作
- 查找目标:
^(.*?:.*?):.*$ - 替换为:
$1 - 勾选「正则表达式」选项,执行全部替换即可批量处理每行内容
Python 代码实现
import re raw_text = """ss pullover jaq:rwbwht:40 ribbed cttn 5608:navy:10.5 shorts:black:xl s:pigment wash mushroom:l t tote bag:mushroom:1size""" processed_lines = [re.sub(r'(.*?:.*?):.*', r'\1', line) for line in raw_text.split('\n')] print('\n'.join(processed_lines))
命令行(awk)实现
通过指定冒号为分隔符,输出前两个字段并拼接:
awk -F: '{print $1":"$2}' your_file.txt
内容的提问来源于stack exchange,提问作者user22338597
相关产品推荐
相关产品推荐

