2016-03-06 126 views

回答

2

使用或条件上的三个可能的值:

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

您可能还需要使用情况敏感替换,通过使用flags 'gi'而不是仅仅'g'

如果能出现这些字符串本身(即不跟随的数字)你需要扩展的正则表达式:

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

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

+0

因为它消除所有字符 'ST', '第二' 等,其除了不是它不适合属于数字 – user3627553

+0

@ user3627553:你有没有看到我的第二个正则表达式?顺便说一句:你应该有这样的事情在你最初的问题,无法拿出更多的信息,一旦你有一个答案 –

+0

太好了!非常感谢你! 二是充分,我需要 – user3627553

0

文档说:

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

因此,对于你的情况下,这应该做的伎俩:

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

+0

这将取代数量,并 –

+0

修正(见上文) - 也将匹配5 ** **日等 – Reto

+0

还不行:http://sqlfiddle.com/#! 15/9eecb7db59d16c80417c72d1e1f4fbf1/6530(和'\ d * +'给出错误以及) –

0

相配5 和11 以及

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

相关问题