Carpe Programming/oracle

[oracle] 16진수 -> 2진수

nolite 2012. 2. 16. 17:19


[16진수 -> 2진수 로 변환]

SELECT REPLACE(MAX (SYS_CONNECT_BY_PATH(bit, ',')), ',') bin
  FROM
     (
       SELECT COUNT (*) OVER () - LEVEL + 1 level#
            , DECODE (TRUNC (deci / POWER (2, LEVEL)),ROUND (deci / POWER (2, LEVEL)), 0,1) bit
         FROM
            (
              SELECT 2911 deci
                FROM DUAL
            )
      CONNECT BY POWER (2, LEVEL - 1) <= deci
     )
CONNECT BY PRIOR level# = level# - 1
  START WITH level# = 1

결과 : 101101011111




[확인]

SELECT BIN_TO_NUM (1,0,1,1,0,1,0,1,1,1,1,1)
  FROM DUAL

결과 : 2911



728x90