【问题标题】:Extract string + numbers from a field in PostgreSQL从 PostgreSQL 的字段中提取字符串 + 数字
【发布时间】:2021-09-19 08:09:56
【问题描述】:

到目前为止我对 PostgreSQL 模式匹配的了解:

  1. 提取数字的第一个连续部分。
SELECT SUBSTRING('X2Y1234445Z2', '([0-9]+)');  
  1. 检查字符串是否包含子字符串模式:cuid:
select ' cuid: 7812789sioeudkl290380 cuid: 1812789' ilike '%cuid: %';
  1. 但以下返回 false。

select 'cuid: 7812789sioeudkl290380 cuid: 1812789' ilike '%cuid: [0-9]+%';

所以对于字符串:'cuid:7812789sioeudkl290380 cuid:1812789',expect提取cuid:7812789 cuid: 1812789。假设在 cuid: 之前和之后有任意数量的空格。

编辑:

SELECT SUBSTRING(' cuid: 7812789sioeudkl290380 cuid: 1812789', '\s*cuid\s*[0-9]+');

但这种方式没有任何回报。

【问题讨论】:

  • 它什么也不返回,因为你在cuid 之后有一个:,并且在你的正则表达式('\s*cuid\s*[0-9]+')中你没有:

标签: regex postgresql


【解决方案1】:
SELECT regexp_matches(' cuid: 7812789sioeudkl290380 cuid: 1812789', '\s+cuid:\s+[0-9]+','g');

g 标志,它命令它返回所有匹配项,而不仅仅是第一个 一个。

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2020-07-05
    • 2011-08-02
    • 2021-11-27
    相关资源
    最近更新 更多