我的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
答案 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
查询可能更准确,我是新手