Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mysql chuyển đổi int thành MAC

Giả sử rằng bạn đã lưu trữ địa chỉ MAC bằng cách loại bỏ tất cả các dấu phân tách và chuyển đổi số HEX kết quả thành int, chuyển đổi từ int này thành địa chỉ MAC có thể đọc được của con người sẽ là:

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

Hàm được lấy từ http://www.onurguzel .com / storage-mac-address-in-a-mysql-database /

Phiên bản MySQL cho chức năng này:

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 ;

Bạn cũng có thể làm điều đó trực tiếp trong SQL, như sau:

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. Buộc MySQL trả về các bản sao từ mệnh đề WHERE IN mà không sử dụng JOIN / UNION?

  2. Mysql cải thiện tốc độ CHỌN

  3. Loại bảng đã sử dụng không hỗ trợ chỉ mục FULLTEXT

  4. Tôi có nên sử dụng MyISAM hoặc Bảng InnoDB cho Cơ sở dữ liệu MySQL của mình không?

  5. Giá trị tự động tăng nghiêm ngặt trong MySQL