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

如何使用REGEXP_SUBSTR提取列中字符串的FFOR-*内容?

搞定FFOR-*标识的正则提取问题

嘿,你原来写的正则\d[FFOR-]*方向完全错啦——它是找数字开头,后面跟着FFOR或者横杠的内容,这和你要抓的FFOR-开头的升序标识完全不搭边。

根据你给出的字符串格式,我给你两个实用的解决方案:

方案1:精准截取到感叹号前的FFOR标识

如果你的升序标识都是FFOR-xxx格式,而且后面固定跟着!来分隔时间戳,用这个正则准没错:

SELECT REGEXP_SUBSTR(source_column, 'FFOR-[^!]+') AS `order` FROM your_table;

为啥好用?给你拆解下:

  • FFOR-:精准匹配标识的固定开头
  • [^!]+:意思是“匹配任意不是感叹号的字符,直到碰到第一个!为止”,刚好能把FFOR-1这类完整标识揪出来,不会带后面的时间戳

方案2:提取FFOR开头的整个独立片段

要是你的分隔符不固定,但FFOR标识前后都是空格(是个独立的“单词”),那用这个更灵活:

SELECT REGEXP_SUBSTR(source_column, 'FFOR-\S+') AS `order` FROM your_table;

解释下:

  • \S+:匹配所有非空白字符,能把从FFOR开始到下一个空格前的内容全提出来,比如示例里会拿到FFOR-1!20170904T105949.630,适合需要保留标识+时间戳前缀的场景

举个实际测试例子

拿你给的示例字符串:

HISTORY-VDF-DE-EOF-WORK VDF-DE-EOF-WORK FFOR-1!20170904T105949.630 GMT
用方案1会返回FFOR-1,方案2返回FFOR-1!20170904T105949.630,你可以根据自己的实际需求选~

对了,不同数据库的REGEXP_SUBSTR语法可能有点小差别,比如Oracle需要指定匹配位置参数,写法是:

SELECT REGEXP_SUBSTR(source_column, 'FFOR-[^!]+', 1, 1) AS `order` FROM your_table;

内容的提问来源于stack exchange,提问作者S.Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:17:16