从整数值

时间:2015-11-19 12:09:15

标签: sql regex oracle oracle11g

在数字格式的MAC地址的db值中,对于我的查询,我需要像XX:XX:XX:XX:XX:XX这样的实际格式的值。

示例:对于号码9817108886245,实际MAC地址值必须为08:ED:B9:49:B2:E5

我写了下一个查询:

select regexp_replace(lpad(upper(trim(to_char(9817108886245,
    'xxxxxxxxxxxx'))), 12, '0'),
    '^([A-Z0-9]{2})([A-Z0-9]{2})([A-Z0-9]{2})([A-Z0-9]{2})([A-Z0-9]{2})([A-Z0-9]{2})$'
    , '\1:\2:\3:\4:\5:\6') as MAC
from dual;

可以简化我的查询吗?

1 个答案:

答案 0 :(得分:1)

那么这将是更短的查询字符串,但不完全更简单

select substr(regexp_replace(
    upper(to_char(9817108886245,'00xxxxxxxxxxxx')),'([A-F0-9]{2})',':\1'),6) as MAC
from dual;