gpt4 book ai didi

Mysql 将 int 转换为 MAC

转载 作者:可可西里 更新时间:2023-11-01 07:59:12 38 4
gpt4 key购买 nike

我有一些数据可以转换,其中一列有 IP,它包含整数值。我在我的 mysql 查询中使用了以下函数。是否有一个函数可以用来转换我的 mac 列包含整数,数据类型为 bigint 到 MAC 地址。

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)));
}

函数取自http://www.onurguzel.com/storing-mac-address-in-a-mysql-database/

此函数的 MySQL 版本:

delimiter $$
create function itomac (i BIGINT)
returns char(20)
language SQL
begin
declare temp CHAR(20);
set temp = lpad (hex (i), 12, '0');
return concat (left (temp, 2),':',mid(temp,3,2),':',mid(temp,5,2),':',mid(temp,7,2),':',mid(temp,9,2),':',mid(temp,11,2));
end;
$$
delimiter ;

你也可以直接用 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

关于Mysql 将 int 转换为 MAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16588665/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com