Обсуждение: Re: Extract only numbers from a varchar column
---------- Forwarded message ----------
From: Leandro Casadei <mateamargo@gmail.com>
Date: May 5, 2008 2:08 PM
Subject: Extract only numbers from a varchar column
To: pgsql-general@postgresql.org
From: Leandro Casadei <mateamargo@gmail.com>
Date: May 5, 2008 2:08 PM
Subject: Extract only numbers from a varchar column
To: pgsql-general@postgresql.org
I need to extract only the first occurence of numbers from a column that is varchar.
Here are a few examples of what I need to do:
abc200xx -> 200
340ppsdd -> 340
150ytyty555 -> 150
Can this be done by a simple query or do I need to use a cursor?
Thanks
I've finally solved this way:
select name, regexp_replace(name, '\\D*', '', 'g')::int as replaced
from sometable
where regexp_replace(name, '\\D*', '', 'g') != ''
On Tuesday 06 May 2008 07:09:56 Leandro Casadei wrote: > I need to extract only the first occurence of numbers from a column that > is varchar. <snip> > abc200xx -> 200 > 340ppsdd -> 340 > 150ytyty555 -> 150 tiger=> select substring('abc200xx300ff','[0-9]+'); substring ----------- 200 (1 row) Time: 0.495 ms tiger=> select substring('340ppsdd','[0-9]+'); substring ----------- 340 (1 row) Time: 0.480 ms tiger=> select substring('150ytyty555','[0-9]+'); substring ----------- 150 (1 row) Time: 0.494 ms tested on 8.2. i don't have 8.3 here, so i don't know if there will be type coercion issues there. doubt it though. tiger -- Gerald Timothy Quimpo bopolissimus@gmail.com If you don't know who Knuth is, then you're not a programmer. If you're a programmer and you don't know who Knuth is, well... you should probably be fired. -- scienceblogs.com/goodmath/2008/01/the_genius_of_donald_knuth_typ.php