Re: Removing whitespace using regexp_replace
От | Thomas Kellerer |
---|---|
Тема | Re: Removing whitespace using regexp_replace |
Дата | |
Msg-id | fg1ugo$m6v$1@ger.gmane.org обсуждение исходный текст |
Ответ на | Re: Removing whitespace using regexp_replace (Andreas Kretschmer <akretschmer@spamfence.net>) |
Ответы |
Re: Removing whitespace using regexp_replace
|
Список | pgsql-sql |
Andreas Kretschmer wrote on 28.10.2007 12:42: >> I have a column with the datatype "text" that may contain leading >> whitespace (tabs, spaces newlines, ...) and I would like to remove them all >> (ideally leading and trailing). > > You can use trim() for that: > > select 'x' || trim(both '\t' from trim(both ' ' from ' \t\tfoo bar ')) || 'x'; > > (for testing with 'x' around the result) Yes I was thinking about a solution like that as well, but wouldn't that only work if the order in which spaces and tabs appear is always the same? The above would replace ' \t' but not '\t ', right? > For regexp_replace() you need an extra parameter 'g' like below: Cool, works like a charm. Didn't see that parameter when first reading that chapter. But it seems my problem was actually caused by something else: SELECT regexp_replace(myfield, '\s*', '', 'g') FROM mytable; does not replace anything, but SELECT regexp_replace(myfield, '[ \t\n\r]*', '', 'g') FROM mytable; does replace all whitespaces (as I expected). And subsequently SELECT regexp_replace(myfield, '^[ \t\n\r]*', '', 'g') FROM mytable; replaces only the whitespace at the beginning. I thought \s is a "shortcut" for "whitespace", which in my understanding is the same as [ \t\r\n]. Am I wrong here? Cheers Thomas
В списке pgsql-sql по дате отправления: