PostgreSQL 中十六进制值的适当数据类型是什么?

4

我需要将十六进制值存储到数据库表中,有人可以推荐我需要使用的属性数据类型吗?

提前感谢。


为什么不直接存储十进制值(存储更紧凑),然后在选择时(例如通过视图)将其转换为所需的任何进制? - user330315
"Hex values" 是什么,我们是在谈论 "wikipedia.zip"、"%5a" 还是 "0xF1D0F00D"? - Jasen
2个回答

3
你可以使用bytea来存储十六进制格式的数据。更多信息可在postgresql文档中查询

0

你可以将它存储在普通整数类型中,如果你想要转换成十六进制字符串,这并不太困难。

在postgresql中已经有一个to_hex函数。SELECT to_hex(42)应该会输出2a。但是要做相反的操作需要创建一个新的存储过程(参考自http://www.varlena.com/GeneralBits/104.php)。

CREATE FUNCTION hex2dec(t text) RETURNS integer AS 
$$
 DECLARE
   r RECORD;
 BEGIN
   FOR r IN EXECUTE 'SELECT x'''||t||'''::integer AS hex' LOOP
     RETURN r.hex;
   END LOOP;
 END
$$ LANGUAGE plpgsql IMMUTABLE STRICT;

3
for循环是不必要的开销。 - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接