Мне нужно очистить строковый столбец с пробелами и вкладками, включенными внутри, в начале или в конце строк (это беспорядок!). Я хочу сохранить только одно пробел между каждым словом. Скажем, у нас есть следующая строка, которая включает в себя все возможные ситуации:
mystring = ' one two three four '
- 2 пробела перед "одним"
- 1 пробел между "одним" и "вторым"
- 4 пробелов между "двумя" и "тремя"
- 2 вкладки после "три"
- 1 вкладка после 'four'
Вот как я это делаю:
- Я удаляю ведущие и конечные пробелы
- Я удаляю вкладки, ведущие и завершающие.
- Я заменяю как "пробелы, повторяемые по крайней мере два", так и вкладки единственным пробелом
WITH
t1 AS (SELECT' one two three four '::TEXT AS mystring),
t2 AS (SELECT TRIM(both ' ' from mystring) AS mystring FROM t1),
t3 AS (SELECT TRIM(both '\t' from mystring) AS mystring FROM t2)
SELECT regexp_replace(mystring, '(( ){2,}|\t+)', ' ', 'g') FROM t3 ;
В итоге я получаю следующую строку, которая выглядит красиво, но у меня все еще есть конечный пробел...
'one two three four '
Любая идея сделать это более простым способом и решить эту последнюю проблему?
Большое спасибо!