postgres regexp_replace 只想允许 az 和 AZ

发布于 2024-10-07 19:32:57 字数 296 浏览 2 评论 0原文

在字符串的表列中,我们可以有数字/特殊字符/空格。 我想用空字符替换数字/特殊字符/空格,我看到有一个名为 regexp_replace 的函数,但如何使用没有太多用户友好的帮助,例如我想使用以下字符串。

String = 'abc$wanto&toremove#special~chars'

我想从上面的字符串中删除所有特殊字符和数字,只允许 azAZ 其余字符应替换为 '' 如何这样做?

In a table column in string we can have numbers/special chars/white spaces.
I want to replace numbers/special chars/white space with empty char, i see there is function named regexp_replace but how to use not much user friendly help avaialble for example i want to use following string.

String = 'abc$wanto&toremove#special~chars'

I want to remove all special chars and numbers from above string want to allow only a-z and A-Z rest of chars should be replaced with '' how to do that ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

骄傲 2024-10-14 19:32:58

应该是:

regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]+', '')

Should be:

regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]+', '')
追星践月 2024-10-14 19:32:57
SELECT regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]', '', 'g');

        regexp_replace        
------------------------------
 abcwantotoremovespecialchars
SELECT regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]', '', 'g');

        regexp_replace        
------------------------------
 abcwantotoremovespecialchars
平生欢 2024-10-14 19:32:57

对我来说以下工作有效。

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”

其中包含我们不想删除的字符。

For me the following worked.

regexp_replace(code, '[^a-zA-Z0-9]+', '','g')    

As it adds global filter so it repeats the regex for the entire string.

Example,

SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '')    

Returns: "WellThis Did-Not work&*($%%)_"

SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '','g')    

Returns: "WellThisDidNotwork"

Which has the characters we don't want removed.

乖乖哒 2024-10-14 19:32:57

为了使其更简单:

regexp_replace('abc$wanto&toremove#special~chars', '[^[:alpha:]]')

To make it simpler:

regexp_replace('abc$wanto&toremove#special~chars', '[^[:alpha:]]')
花开浅夏 2024-10-14 19:32:57

如果你想用最接近的非特殊字符替换该字符,你可以这样做:

select
  translate(
    lower( name ), ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', '--aaaaaeeeeiiiiooooouuuucc'
  ) as new_name,
  name
from cities;

If you want to replace the char with the closest not special char, you can do something like this:

select
  translate(
    lower( name ), ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', '--aaaaaeeeeiiiiooooouuuucc'
  ) as new_name,
  name
from cities;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文