Postgres regexp_replace,删除 "st","nd","rd"
Postgres regexp_replace, remove "st", "nd", "rd"
我需要删除上面的后缀,只保留数字和其他文本。
字符串例如:
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;
您可能还想使用大小写 in 敏感替换,方法是使用标志 'gi'
而不仅仅是 'g'
.
如果这些字符串可以自己出现(即不跟在数字后面),您需要扩展正则表达式:
regexp_replace(the_column, '([0-9])((st)|(nd)|(rd))', '', 'g')
SQLFiddle 示例:http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/6533
文档说:
regexp_replace(source, pattern, replacement [, flags ])
所以对于你的情况,这应该可以解决问题:
regexp_replace(YOUR_SOURCE, '(\d*+(\w{2}))', '', 'g')
匹配第 5 和第 11
regexp_replace(the_column, '([\d+])(\w{2})', '', 'g')
我需要删除上面的后缀,只保留数字和其他文本。
字符串例如:
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;
您可能还想使用大小写 in 敏感替换,方法是使用标志 'gi'
而不仅仅是 'g'
.
如果这些字符串可以自己出现(即不跟在数字后面),您需要扩展正则表达式:
regexp_replace(the_column, '([0-9])((st)|(nd)|(rd))', '', 'g')
SQLFiddle 示例:http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/6533
文档说:
regexp_replace(source, pattern, replacement [, flags ])
所以对于你的情况,这应该可以解决问题:
regexp_replace(YOUR_SOURCE, '(\d*+(\w{2}))', '', 'g')
匹配第 5 和第 11
regexp_replace(the_column, '([\d+])(\w{2})', '', 'g')