-2

我需要删除上面的后缀,只保留一个数字和其他文本。

以字符串为例:

Start from 1st, 2nd, 3rd

应该

Start from 1, 2, 3
4

3 回答 3

2

对三个可能的值使用 or 条件:

select regexp_replace(the_column, '(st)|(nd)|(rd)', '', 'g') as new_value
from the_table;

您可能还想敏感替换中使用大小写,方法是使用标志'gi'而不是'g'.

如果这些字符串可以自己出现(即不跟随数字),则需要扩展正则表达式:

regexp_replace(the_column, '([0-9])((st)|(nd)|(rd))', '\1', 'g')

SQLFiddle 示例:http ://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/6533

于 2016-03-06T12:44:53.287 回答
0

第 5场和第11比赛

regexp_replace(the_column, '([\d+])(\w{2})', '\1', 'g')

于 2016-03-06T13:09:37.047 回答
0

文档说:

regexp_replace(source, pattern, replacement [, flags ])

因此,对于您的情况,这应该可以解决问题:

regexp_replace(YOUR_SOURCE, '(\d*+(\w{2}))', '', 'g')

于 2016-03-06T12:47:37.063 回答