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

PostgreSQL SQL如何在字符串中查找文本模式并提取Key后空格分隔的内容

问题根因

你写的正则结果不符合预期是因为贪婪匹配规则:.+会尽可能匹配最长的符合规则的字符串,会一直匹配到整个字符串末尾的最后一个空格位置,所以把extra也包含进了匹配结果。

更高效合理的实现方案

方案1:修正正则规则(推荐,代码更简洁,性能和两次查找截取基本一致)

把匹配任意字符的贪婪规则替换为匹配非空白字符的规则即可,正则写为Key (\S+):

Select substring('Key Match extra text', 'Key (\S+)');

执行后直接返回你需要的Match结果,不需要额外计算位置、调用多次截取函数。
\S是正则语法中专门匹配任意非空白字符的规则,默认匹配到第一个空白字符就停止,刚好符合你取空格分隔的第一个单词的需求。

方案2:数组拆分法(适用于支持字符串拆分函数的SQL方言)

如果你的数据库支持字符串拆分函数,也可以直接按空格拆分后取对应位置的元素,代码可读性更高:

-- 以PostgreSQL为例
Select (string_to_array('Key Match extra text', ' '))[2];

如果Key不一定在字符串开头,配合数组查找函数也能快速定位目标内容,比多次计算位置的写法更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:45:05