Подтвердить что ты не робот

Postgres regexp_replace хотят разрешить только a-z и A-Z

В столбце таблицы в строке мы можем иметь числа/специальные символы/пробелы. Я хочу заменить номера/специальные символы/пустое пространство пустым char, я вижу, что есть функция с именем regexp_replace, но как использовать не очень удобную для пользователя помощь avaialble, например, я хочу использовать следующую строку.

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

Я хочу удалить все специальные символы и цифры из строки выше, чтобы разрешить только a-z и a-z остальную часть символов заменить на '' как это сделать?

4b9b3361

Ответ 1

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

Ответ 2

Чтобы сделать это проще:

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

Ответ 3

Если вы хотите заменить char ближайшим не специальным char, вы можете сделать что-то вроде этого:

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

Ответ 4

Для меня работали следующие.

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"

У кого есть символы, которые мы не хотим удалить.

Ответ 5

Должно быть:

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