Mysql将int转换为MAC
我有一些转换数据,它有两列,一列有IP,它包含整数值。我在我的mysql查询中使用了以下函数。是否有一个函数可以用来将我的mac列(包含整数,数据类型为bigint)转换为mac地址Mysql将int转换为MAC,mysql,function,int,Mysql,Function,Int,我有一些转换数据,它有两列,一列有IP,它包含整数值。我在我的mysql查询中使用了以下函数。是否有一个函数可以用来将我的mac列(包含整数,数据类型为bigint)转换为mac地址 SELECT INET_NTOA(ip_address) AS myip,mymac FROM table1 假设您已通过抑制所有分隔符并将生成的十六进制数转换为int来存储MAC地址,则从该int到人类可读的MAC地址的转换为: function int2macaddress($int) { $he
SELECT INET_NTOA(ip_address) AS myip,mymac
FROM table1
假设您已通过抑制所有分隔符并将生成的十六进制数转换为int来存储MAC地址,则从该int到人类可读的MAC地址的转换为:
function int2macaddress($int) {
$hex = base_convert($int, 10, 16);
while (strlen($hex) < 12)
$hex = '0'.$hex;
return strtoupper(implode(':', str_split($hex,2)));
}
您也可以直接在SQL中执行此操作,如下所示:
select
concat (left (b.mh, 2),':',mid(b.mh,3,2),':',mid(b.mh,5,2),':',mid(b.mh,7,2),':',mid(b.mh,9,2),':',mid(b.mh,11,2))
from (
select lpad (hex (a.mac_as_int), 12, '0') as mh
from (
select 1234567890 as mac_as_int
) a
) b
只需使用:
对于数值参数N
,返回被视为longlong()数的N
值的十六进制字符串表示形式
因此,在你的情况下:
SELECT INET_NTOA(ip_address) AS myip, HEX(mymac)
FROM table1
请注意,这不会插入字节分隔符,例如冒号字符。您使用什么算法来存储MAC地址是bigint?是否有mysql函数可用于将bigint转换为MAC地址。我想把它添加到我的mysql select语句中。我不使用php。感谢您的评论,并为php示例感到抱歉;我已经用MySQL函数示例更新了答案。谢谢你的解决方案,它给了我一个很好的线索。我试图将SQL直接集成到我最初的select语句中,但我很挣扎。
SELECT INET_NTOA(ip_address) AS myip, HEX(mymac)
FROM table1