Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

Re: Removing whitespace using regexp_replace


  • From: Thomas Kellerer <spam_eater(at)gmx(dot)net>
  • To: pgsql-sql(at)postgresql(dot)org
  • Subject: Re: Removing whitespace using regexp_replace
  • Date: Sun, 28 Oct 2007 13:15:20 +0100
  • Message-id: <fg1ugo$m6v$1@ger.gmane.org> <text/plain>

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






Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group