在 mysql 中将 mac 地址从 varchar 转换为 bigint(6)
Convert mac adress from varchar to bigint(6) in mysql
我需要将 mysql 数据库中的大量 mac 地址从 varchar 格式转换为 bigint(6)。
我知道 mac 地址 C404158996CD - 是 215521820251853。
执行此操作的正确功能是什么?我尝试为此使用 hex() 但它 return 433430343135383939364344 用于相同的 mac 地址。
C404158996CD是十六进制数,215521820251853是十进制数。 HEX(215521820251853) = C404158996CD,反之则不行。
您需要 CONV('C404158996CD', 16,10)
("convert 'C404158996CD' from base 16 to base 10")
看看这个tutorial。他们在这里将 MAC 地址转换为 bigint
。你可以这样做:
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
这个Whosebug's answer解释的很详细
或者,您也可以使用 MySQL
的 conv
函数
我需要将 mysql 数据库中的大量 mac 地址从 varchar 格式转换为 bigint(6)。 我知道 mac 地址 C404158996CD - 是 215521820251853。 执行此操作的正确功能是什么?我尝试为此使用 hex() 但它 return 433430343135383939364344 用于相同的 mac 地址。
C404158996CD是十六进制数,215521820251853是十进制数。 HEX(215521820251853) = C404158996CD,反之则不行。
您需要 CONV('C404158996CD', 16,10)
("convert 'C404158996CD' from base 16 to base 10")
看看这个tutorial。他们在这里将 MAC 地址转换为 bigint
。你可以这样做:
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
这个Whosebug's answer解释的很详细
或者,您也可以使用 MySQL
的 conv
函数