sql >> Database >  >> RDS >> Mysql

Mysql converteert een int naar MAC

Ervan uitgaande dat u het MAC-adres hebt opgeslagen door alle scheidingstekens te onderdrukken en het resulterende HEX-nummer om te zetten in int, zou de conversie van dit int naar een voor mensen leesbaar MAC-adres zijn:

function int2macaddress($int) {
    $hex = base_convert($int, 10, 16);
    while (strlen($hex) < 12)
        $hex = '0'.$hex;
    return strtoupper(implode(':', str_split($hex,2)));
}

De functie is afkomstig van http://www.onurguzel .com/storing-mac-address-in-a-mysql-database/

De MySQL-versie voor deze functie:

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 ;

Je kunt het ook rechtstreeks in SQL doen, zoals dit:

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


  1. Hoe MySQL root-aanmeldingen uitschakelen als er geen wachtwoord is opgegeven?

  2. Sorteerprobleem, is het mogelijk om te downgraden/converteren van utf8mb4_unicode_ci naar utf8_general_ci?

  3. Genereer CREATE-instructies voor alle MySql-tabellen

  4. Hoge beschikbaarheid volgen voor PostgreSQL met Heartbeat