Postgres查询从URL中删除正则表达式?

时间:2018-06-12 21:29:35

标签: regex postgresql

我的Postgres表中有一堆URL,格式如下:

/博客/交ID = 34331824c1866ffb&安培;?的 extraParam = 23232 &安培; ID2 = 2

/博客/交ID = 343fb434343&安培;?的 extraParam = XXXX &安培; ID2 = 2

如何编写查询以返回没有extraParam值的URL?

IE。我想要这个回复:

/博客/交ID = 34331824c1866ffb&安培; ID2 = 2

/博客/交ID = 343fb434343&安培; ID2 = 2

3 个答案:

答案 0 :(得分:0)

您可以使用regexp_replace来实现您的需求 语法:regexp_replace(source,pattern,replacement [,flags])

这是一个例子:
SELECT regexp_replace(' abc& def& ghi','&。*&','&')
结果:abc& ghi

您可以参考以下链接进一步阅读:
https://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP

答案 1 :(得分:0)

你可能在regexp_replace之后,但用空值替换

像这样:

CASE
 WHEN column ~ 'regex'
 THEN
 REGEXP_REPLACE(column, 'regex', '') END) AS column_processed

答案 2 :(得分:-1)

SELECT CASE WHEN url_column ~ '\?.*extraParam=.*&'
            THEN regexp_replace(url_column, 'extraParam=.*&', '')
            WHEN url_column ~ '\?.*extraParam=.*'
            THEN regexp_replace(url_column, 'extraParam=.*', '')
            ELSE url_column
            END

查询可能更准确,我是新手