Thread: What's the logical counterpart of the to_hex function?

What's the logical counterpart of the to_hex function?

From
"Michael Nolan"
Date:
I have data (from an external source) which is in text format as a hex number (it's actually an IP address, but that's probably not relevant.)

to_hex gets from integer to hex, I can cast a hex constant to integer (ie x'12a7'31'::int, but how do I get a database column from string/hex to integer? 

(If this is referenced in the documentation, I'm not finding it.)
--
Mike Nolan

Re: What's the logical counterpart of the to_hex function?

From
Steve Atkins
Date:
On Jul 16, 2007, at 11:36 AM, Michael Nolan wrote:

> I have data (from an external source) which is in text format as a
> hex number (it's actually an IP address, but that's probably not
> relevant.)

It likely is relevant, as it means it's a 32 bit unsigned integer,
which isn't something postgresql supports. Depending on what you need
you might want to look at using 32 bit signed, with a 2^31 offset, 64
bit signed, inet or ip4 (which is on pgfoundry, not built-in).

>
> to_hex gets from integer to hex, I can cast a hex constant to
> integer (ie x'12a7'31'::int, but how do I get a database column
> from string/hex to integer?
>

Last time I checked the suggested way to do this was with a plpgsql
function that dynamically creates the cast and does it with exec.
Google for postgresql and hex and you can likely find sample code.

Cheers,
   Steve



Re: What's the logical counterpart of the to_hex function?

From
"Michael Nolan"
Date:


On 7/16/07, Steve Atkins <steve@blighty.com> wrote:

On Jul 16, 2007, at 11:36 AM, Michael Nolan wrote:

> I have data (from an external source) which is in text format as a
> hex number (it's actually an IP address, but that's probably not
> relevant.)

It likely is relevant, as it means it's a 32 bit unsigned integer,
which isn't something postgresql supports. Depending on what you need
you might want to look at using 32 bit signed, with a 2^31 offset, 64
bit signed, inet or ip4 (which is on pgfoundry, not built-in).


Actually, since what I need are the 4 dotted tuples, all I really need is a simple way to convert a two byte hex field to an integer, it sounds like the exec is the preferred (though IMHO clumsy) method.

--
Mike Nolan