Re: How to convert integer to string in functions - Mailing list pgsql-general

From Stefan Keller
Subject Re: How to convert integer to string in functions
Date
Msg-id CAFcOn2_L+puhFs5kTRb59TPA2faDnahwVP_G+2doyt1GdEiejA@mail.gmail.com
Whole thread Raw
In response to Re: How to convert integer to string in functions  (David Johnston <polobo@yahoo.com>)
Responses Re: How to convert integer to string in functions
List pgsql-general
Hi,

2011/8/12 David Johnston <polobo@yahoo.com>:
> In my table, some of the columns are in text datatype. Few data will come
> down from UI layer as integers. I want to convert that to string/text before
> saving it into the table. Please help me on this.
>
>
> SQL Standard:  "CAST( value AS text )" [or varchar]
> PostgreSQL short-hand:  "value::text"
>
> In both formats replace value with whatever you want to convert.  When
> writing a parameterized  query (using ?) you can write "?::text" ( or Cast(?
> AS type) ) to explicitly cast the unknown parameter.  The "text" in the
> above can be any type name.
>
> David J.

You often find this advice of doing a cast.
But this only works if the input is a clean list of number characters already!
Anything other than this will issue an error:

  postgres=# SELECT '10'::int;

After trying hard to cope with anything possibly as an input string I
found this:

  postgres=# SELECT to_number('0'||mytextcolumn,
'99999999999.000')::int FROM mytable;

You can try this here: Show all peaks of Switzerland which are higher
than 4000 meters above sea.

  SELECT ST_AsText(way) AS geom, name||','||ele AS label
  FROM osm_point
  WHERE "natural" = 'peak'
  AND  to_number('0'||ele, '99999999999.000')::int >= 4000

Any better solutions are welcome.

Yours, Stefan

pgsql-general by date:

Previous
From: Kevin Goess
Date:
Subject: Re: WHERE IN (subselect) versus WHERE IN (1,2,3,)
Next
From: Chris Angelico
Date:
Subject: Re: How to convert integer to string in functions