Re: Help with text(decimal) to hex conversion
От | David G. Johnston |
---|---|
Тема | Re: Help with text(decimal) to hex conversion |
Дата | |
Msg-id | CAKFQuwbnx25Pr3bvfmBMjFsRAGGcq6fp3va3x9WJQCrqM--RvA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Help with text(decimal) to hex conversion (Wei Shan <weishan.ang@gmail.com>) |
Список | pgsql-novice |
Please don't top-post.
Hi all,The method suggested so far doesn't actually work.
What "method"(s) have you tried?- all you show below are "to_hex(...::bigint)"
I'm trying to convert a text datatype to hex. The maximum hex returned will be 20 octets. I'm hoping to do it within PostgreSQL so I can call it like a function (to_hex).
PostgreSQL, from what I can tell, cannot natively (i.e, in SQL or pl/pgsql) support any number larger than bigint's maximum value. If you need to handle something larger you must keep the representation as a string and provide that string to a programming language number library that can. Supposedly both Java and Python can.
psql> select column from table limit 5;---------------------48490182132044936354939764883475860925100630405370179282710077180495386354981010517297675790156(5 rows)psql> select to_hex(column_name::bigint) from tablelimit 5;to_hex------------------434b2c5fab740543448d91fd51870dbddf71c3488ee543bdfc223a187ff6eae061420d75a674c(5 rows)
column != column_name ... and again you must not cast to bigint.
I also tried the following suggestions.psql> select encode(column::bytea,'hex') from table limit 1;encode----------------------------------------31303037373138303439353338363335343938psql> select convert_from(decode('31303037373138303439353338363335343938', 'hex'), 'utf8');convert_from---------------------1007718049538635498
This is Row #4 in your data...but you are simply encoding the textual representation of something that looks like a number, then decoding it again.
SELECT encode('16'::bytea, 'hex'); a change of numeric base would give you "F", not "3136"
David J.
В списке pgsql-novice по дате отправления: