【发布时间】:2019-03-15 09:46:32
【问题描述】:
我在 postgresql 中有一个以 mac 地址类型存储的 mac 地址。我需要转换有关 I/G 位和 U/L 位 (more infos) 的信息中的第一个八位字节。
示例:mac 地址为AA-BB-CC-DD-EE-FF。然后第一个八位字节是AA。转换为二进制:0101 01010。最后一位代表I/G:0。从右到左第二位是U/L位:1。
如何在 postgresql 查询中执行此操作?
这是我目前所拥有的:
select id, mac, left(mac::text,2) as octet
from mytable
返回是:
id,mac,octet
13,aa:XX:XX:XX:XX:XX,aa
我也试过left(mac::text,2)::integer as integer,但收到错误消息[22P02] ERROR: invalid input syntax for integer: "aa"
我想要的结果如下:
id, mac, octet, binary, ig_bit, ul_bit
13, aa:XX:XX:XX:XX:XX,aa, 1010 1010, 0, 1
所以我已经隔离了第一位,但是,格式是“文本”,我无法将其转换为整数或二进制。
【问题讨论】:
-
我在 pg 邮件列表中找到了这个:hex_to_int
标签: postgresql binary hex