我有一些數據轉換其中有2列一列有IP,它包含值是整數。我在我的mysql查詢中使用以下函數。是否有一個函數可以用來將包含整數和數據類型的我的mac列轉換爲mac地址。Mysql將一個int轉換爲MAC
SELECT INET_NTOA(ip_address) AS myip,mymac
FROM table1
我有一些數據轉換其中有2列一列有IP,它包含值是整數。我在我的mysql查詢中使用以下函數。是否有一個函數可以用來將包含整數和數據類型的我的mac列轉換爲mac地址。Mysql將一個int轉換爲MAC
SELECT INET_NTOA(ip_address) AS myip,mymac
FROM table1
假設您已通過抑制所有分離器和所得到的十六進制數變換爲INT存儲的MAC地址,從這個中斷到人類可讀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
你用什麼算法存儲MAC地址是bigint? – Stephan