我需要删除上述后缀,并保留只是一个数字和其他文本。Postgres的REGEXP_REPLACE,去除“ST”,“第二”,“第三”
例如字符串:
Start from 1st, 2nd, 3rd
应该
Start from 1, 2, 3
我需要删除上述后缀,并保留只是一个数字和其他文本。Postgres的REGEXP_REPLACE,去除“ST”,“第二”,“第三”
例如字符串:
Start from 1st, 2nd, 3rd
应该
Start from 1, 2, 3
使用或条件上的三个可能的值:
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
文档说:
regexp_replace(source, pattern, replacement [, flags ])
因此,对于你的情况下,这应该做的伎俩:
个regexp_replace(YOUR_SOURCE, '(\d*+(\w{2}))', '', 'g')
这将取代数量,并 –
修正(见上文) - 也将匹配5 ** **日等 – Reto
还不行:http://sqlfiddle.com/#! 15/9eecb7db59d16c80417c72d1e1f4fbf1/6530(和'\ d * +'给出错误以及) –
相配5 第和11 第以及
regexp_replace(the_column, '([\d+])(\w{2})', '\1', 'g')
因为它消除所有字符 'ST', '第二' 等,其除了不是它不适合属于数字 – user3627553
@ user3627553:你有没有看到我的第二个正则表达式?顺便说一句:你应该有这样的事情在你最初的问题,无法拿出更多的信息,一旦你有一个答案 –
太好了!非常感谢你! 二是充分,我需要 – user3627553