Oracle Type Casting - PullRequest
       2

Oracle Type Casting

2 голосов
/ 25 мая 2011

Как я могу сделать следующее в Oracle?

SELECT  (cast field as bit) From Table

Есть ли способ преобразовать это в оператор Oracle используя что-то похожее на приведение или преобразование?

Ответы [ 3 ]

1 голос
/ 25 мая 2011

Если вы хотите увидеть, как выполнять двоичные, шестнадцатеричные, октальные преобразования, см. здесь .(Том Кайт качается)

Например,

SQL> select to_bin( 123 ) bin, to_hex( 123 ) hex, to_oct( 123 ) oct from dual
2  /

BIN             HEX             OCT
--------------- --------------- ---------------
1111011         7B              173

РЕДАКТИРОВАТЬ: Если вы просто хотите увидеть, был ли бит включен / выключен, вы можете использовать функцию битов (которая выходит изкоробка с оракулом).Здесь также показана функция to_bin, но она не требуется для использования функции bitand.

select to_bin(1234) bin,
  2             bitand(1234,1)+0 bit1,
  3             bitand(1234,2)+0 bit2,
  4             bitand(1234,4)+0 bit3
  5    from dual
  6  /

BIN                BIT1       BIT2       BIT3
------------ ---------- ---------- ----------
10011010010           0          2          0

Вы также можете использовать функцию power для получения значения второго параметра для bitand (2 ^ n).например, мощность (2,0), мощность (2,1), мощность (2,2)

0 голосов
/ 04 сентября 2018
CREATE OR REPLACE FUNCTION to_base (p_dec IN NUMBER, p_base IN NUMBER)
   RETURN VARCHAR2
IS
   l_str   VARCHAR2 (255) DEFAULT NULL;
   l_num   NUMBER         DEFAULT p_dec;
   l_hex   VARCHAR2 (16)  DEFAULT '0123456789abcdef';
BEGIN
   IF (p_dec IS NULL OR p_base IS NULL)
   THEN
      RETURN NULL;
   END IF;

   IF (TRUNC (p_dec) <> p_dec OR p_dec < 0)
   THEN
      RAISE PROGRAM_ERROR;
   END IF;

   LOOP
      l_str := SUBSTR (l_hex, MOD (l_num, p_base) + 1, 1) || l_str;
      l_num := TRUNC (l_num / p_base);
      EXIT WHEN (l_num = 0);
   END LOOP;

   RETURN l_str;
END to_base;

источник: https://www.club -oracle.com / threads / как преобразовать десятичное число в шестнадцатеричное.16083 /

0 голосов
/ 25 мая 2011

Oracle / PLSQL: функция приведения

Синтаксис для функции приведения:

cast ( { expr | ( subquery ) | MULTISET ( subquery ) } AS type_name )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...