sql >> データベース >  >> RDS >> Mysql

MysqlはintをMACに変換します

    すべての区切り文字を抑制し、結果のHEX番号を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
    


    1. SQLで重複を表示しない方法

    2. PostgreSQLで重複レコードを見つける方法

    3. OracleSQLDeveloperでパスワードを変更する

    4. パラメータ付きのMySQLストアドプロシージャ