From: | Richard Huxton <dev(at)archonet(dot)com> |
---|---|
To: | Randall Lucas <rlucas(at)tercent(dot)net> |
Cc: | "Kenny Mok" <kenny(at)vis-ken(dot)com>, <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Type coercion on column in a query |
Date: | 2003-05-14 16:32:11 |
Message-ID: | 200305141732.11386.dev@archonet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Wednesday 14 May 2003 5:10 pm, Randall Lucas wrote:
> Along the same lines, is it possible to tell whether a column may be
> cast to a given type (e.g. numeric) without throwing an error?
>
> Specifically, I have some values that will probably be numbers but
> might have some free text or other gobbledygook in there. I want to
> take the sum of all the numeric values, and maybe the average as well.
> So what I envision is:
>
> table dirty_data (
> id int,
> dirty_numbers text
> );
> select sum( safe_numeric_cast(dirty_numbers) ) from dirty_data where
> safe_numeric_cast(dirty_numbers) is not null;
You'd have to write "safe_numeric_cast()" in plperl, or possibly pltcl (sorry,
I don't use TCL). There's no exception handling in Postgresql (nor will there
be in the next few months).
Alternatively, you could conceivably write a bunch of is_numeric(), is_int()
etc functions and test first.
--
Richard Huxton
From | Date | Subject | |
---|---|---|---|
Next Message | Larry Rosenman | 2003-05-14 16:41:39 | Followup from yesterday's PL/pgSQL fun... |
Previous Message | Randall Lucas | 2003-05-14 16:10:17 | Re: Type coercion on column in a query |