在字符串的表格列中,我们可以有数字/特殊字符/空格。
我想用空字符替换数字/特殊字符/空格,我看到有一个名为regexp_replace
的函数,但是如何使用不太用户友好的帮助,例如我想使用以下字符串。
String = 'abc$wanto&toremove#special~chars'
我想删除上面字符串中的所有特殊字符和数字,只允许a-z
和A-Z
其他字符应替换为''
如何做到这一点?
答案 0 :(得分:52)
select regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]', '', 'g')
答案 1 :(得分:11)
对我来说,以下工作。
regexp_replace(code, '[^a-zA-Z0-9]+', '','g')
因为它添加了全局过滤器,所以它重复了整个字符串的正则表达式。
实施例,
SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '')
返回:“WellThis Did-Not work& *($ %%)_”
SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '','g')
返回:“WellThisDidNotwork”
哪个字符我们不想删除。
答案 2 :(得分:8)
使其更简单:
regexp_replace('abc$wanto&toremove#special~chars', '[^[:alpha:]]')
答案 3 :(得分:3)
如果要用最接近的非特殊字符替换字符,可以执行以下操作:
select
translate(
lower( name ), ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', '--aaaaaeeeeiiiiooooouuuucc'
) as new_name,
name
from cities;
答案 4 :(得分:0)
应该是:
regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]+', '')