This question already has answers here:
Convert hex in text representation to decimal number
(5个答案)
3年前关闭。
我想将HTML使用的十六进制字符串转换为
我可以像这样将字符串解码为
在具有固定值的查询中,它的工作原理很漂亮:
但是我不能将两者放在一起,例如-'ffaa33'作为参数。
有人有更好的主意吗?我正在使用PosgreSQL 9.1?
必须使用0进行左填充,因为最左边的位始终将被解释为符号位。
还要记住,
(5个答案)
3年前关闭。
我想将HTML使用的十六进制字符串转换为
bigint
,然后通过PL/pgSQL编写的函数将其转换为Postgres中单独的R,G和B值。我可以像这样将字符串解码为
bytea
:hex bytea := decode(hex, 'hex');
在具有固定值的查询中,它的工作原理很漂亮:
select ( array[ (cast(x'ffaa33' as bigint) >> 16) % 256,
(cast(x'ffaa33' as bigint) >> 8) % 256,
cast(x'ffaa33' as bigint) % 256 ] )
但是我不能将两者放在一起,例如-'ffaa33'作为参数。
有人有更好的主意吗?我正在使用PosgreSQL 9.1?
最佳答案
一种简单的方法是:
select ('x'||lpad(the_hex_value,16,'0'))::bit(64)::bigint;
必须使用0进行左填充,因为最左边的位始终将被解释为符号位。
还要记住,
bigint
是带符号的,postgres没有内置的无符号类型。关于sql - 在Postgres中将十六进制字符串转换为bigint,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12375369/