如何在oracle pl / sql中获取整数位串长度?

时间:2011-02-01 17:01:57

标签: sql oracle oracle11g

如何计算Oracle PL / SQL中整数的位长?

我希望将INT转换为BIT STRING,然后LENGTH( LTRIM(BIT STRING, '0') )'

1 个答案:

答案 0 :(得分:3)

您可以使用以下公式来获取整数n(n> 0)的二进制表示的字符数:

ceil(log(2, n + 1))

SQL> SELECT n, ceil(log(2, n + 1)) num_of_char
  2    FROM (SELECT ROWNUM n FROM dual CONNECT BY LEVEL <= 64);

         N NUM_OF_CHAR
---------- -----------
         1           1
         2           2
         3           2
         4           3
         5           3
         6           3
         7           3
         8           4
        [...]
        15           4
        16           5
        [...]
        31           5
        32           6
        [...]
        63           6
        64           7