String 是否替换查询语句中的特殊字符?

String 是否替换查询语句中的特殊字符?,string,postgresql,replace,substring,String,Postgresql,Replace,Substring,我可以使用什么方法去除字符串中的所有特殊字符和空格,并在查询中替换为下划线 例如,我想捕捉以下情况,其中table.field_val='exam.pl/e': WHERE method(table.field_val) = 'ex_am_pl_e' 使用,例如: 使用,例如: regexp\u替换: t=# select regexp_replace( 'ex am.pl/e'::text,'[^0-9a-zA-Z]','_','g'); regexp_replace ----------

我可以使用什么
方法去除字符串中的所有特殊字符和空格,并在查询中替换为下划线

例如,我想捕捉以下情况,其中
table.field_val
='exam.pl/e':

WHERE method(table.field_val) = 'ex_am_pl_e'
使用,例如:

使用,例如:

regexp\u替换:

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)
regexp\u替换:

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]
是shorter@Abelisto但是
[^0-9a-zA-Z]
[^\w]
不是一回事。当然,替换字符是
但是…op提供的“特殊字符”列表是空格、点、反斜杠-我的答案是胡乱猜测anyway@muistooshort当然,也没有“特殊字符”的定义。
[^\w]
是shorter@Abelisto但是
[^0-9a-zA-Z]
[^\w]
不是一回事。当然,替换字符是
但是…op提供的“特殊字符”列表是空格、点、反斜杠-我的答案是胡乱猜测anyway@muistooshort当然,但“特殊字符”也没有定义。使用translate over regexp_replace的最佳理由是,它要快得多。对于更大的数据集很重要。我似乎无法让translate为多个字符工作,只有一个字符。i、 e.“/”有效,但“/”无效?编辑:我刚刚意识到字符彼此对应,这样翻译('string','123','abc');第三个字符串中的下划线数量与第二个字符串中的不同字符数量相同。使用translate over regexp_replace的最佳原因是,它要快得多。对于更大的数据集很重要。我似乎无法让translate为多个字符工作,只有一个字符。i、 e.“/”有效,但“/”无效?编辑:我刚刚意识到字符彼此对应,这样翻译('string','123','abc');第三个字符串中的下划线数量与第二个字符串中的不同字符数量相同。