Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql конвертира int в MAC

Ако приемем, че сте съхранили MAC адреса чрез потискане на всички разделители и преобразуване на полученото HEX число в int, преобразуването от този 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявката не работи правилно (числа)

  2. SQLException :Преди началото на набора от резултати

  3. UTF-8 докрай

  4. Как да сравня (И) два низа, които представляват двоична маска в mysql?

  5. java.sql.SQLException:Не е намерен подходящ драйвер за тест на localhost