gpt4 book ai didi

regex - 使用 regexp_replace 在 Postgres 9.5 中进行正面回顾

转载 作者:行者123 更新时间:2023-11-29 13:13:59 27 4
gpt4 key购买 nike

我有这样的值:1ST、2ND、FIRST,我只想删除“ST”和“ND”,前提是前面的是数字。

我正在运行 postgres 9.5,并且我在 SQL Fiddle 中有一个积极的回顾但它只适用于 9.6

SELECT ex,
regexp_replace(ex, '(?<=[0-9]+)(TH|ST|ND|RD)', '', 'gi') as test
FROM t1

除了像这样使用 CASE 语句之外,还有其他方法可以做到这一点吗:

SELECT ex,
(CASE WHEN ex ~ '\d(TH|ST|ND|RD)' THEN regexp_replace (ex, 'TH|ST|ND|RD', '','gi') ELSE ex end) as test_case
FROM t1

如有任何建议,我们将不胜感激。谢谢!

最佳答案

您可以匹配并捕获数字并替换为对该值的反向引用。此外,我建议在序数后缀后添加词边界,以确保我们在词尾匹配它们。

SELECT regexp_replace(ex, '([0-9])(?:TH|ST|ND|RD)\y', '\1', 'gi') as test_case FROM t1

参见 updated SQLFiddle .

CREATE TABLE t1
(ex varchar)
;

INSERT INTO t1
(ex)
VALUES
('1ST'),
('2ND'),
('3RD'),
('4TH'),
('FIRST'),
('FOURTH')
;

SELECT regexp_replace(ex, '([0-9])(?:TH|ST|ND|RD)\y', '\1', 'gi') as test_case FROM t1

enter image description here

关于regex - 使用 regexp_replace 在 Postgres 9.5 中进行正面回顾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51416944/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com