【发布时间】:2017-05-01 20:40:19
【问题描述】:
我可以使用什么method 去除字符串中的所有特殊字符和空格并在查询中替换为下划线?
例如,我想捕捉以下情况,其中table.field_val = 'ex am.pl/e':
WHERE method(table.field_val) = 'ex_am_pl_e'
【问题讨论】:
标签: string postgresql replace substring
我可以使用什么method 去除字符串中的所有特殊字符和空格并在查询中替换为下划线?
例如,我想捕捉以下情况,其中table.field_val = 'ex am.pl/e':
WHERE method(table.field_val) = 'ex_am_pl_e'
【问题讨论】:
标签: string postgresql replace substring
regexp_replace:
t=# select regexp_replace( 'ex am.pl/e'::text,'[^0-9a-zA-Z]','_','g');
regexp_replace
----------------
ex_am_pl_e
(1 row)
或更短的:
t=# select regexp_replace( 'ex am.pl/e'::text,'[^\w]','_','g');
regexp_replace
----------------
ex_am_pl_e
(1 row)
【讨论】:
[^\w] 更短
[^0-9a-zA-Z] 和[^\w] 并不完全相同。当然,替换字符是_ 但是...
使用translate(),例如:
select translate('ex am.pl/e', ' ./', '___');
translate
------------
ex_am_pl_e
(1 row)
【讨论】: