Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql przekonwertuj int na MAC

Zakładając, że zapisałeś adres MAC przez pominięcie wszystkich separatorów i przekonwertowanie wynikowej liczby HEX na int, konwersja z tego int na adres MAC czytelny dla człowieka wyglądałaby następująco:

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

Funkcja jest pobierana z http://www.onurguzel .com/storing-mac-address-in-mysql-database/

Wersja MySQL dla tej funkcji:

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 ;

Możesz to również zrobić bezpośrednio w SQL, w ten sposób:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wiele zapytań PDO

  2. AKTUALIZUJ wiele tabel w MySQL za pomocą LEFT JOIN

  3. Grupuj MySQL według daty i liczby, w tym brakujących dat

  4. Nazwa użytkownika PHP i MySQL zgłasza problem

  5. Jak sprawdzić, czy mysql db jest częścią grupy?