select to_number( a , x ) from dual; TO_NUMBER( A , X ) ------------------    ..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle通過函數(shù)進(jìn)行進(jìn)制轉(zhuǎn)化

發(fā)布時(shí)間:2020-07-26 06:07:03 來源:網(wǎng)絡(luò) 閱讀:2942 作者:onlinekof2001 欄目:關(guān)系型數(shù)據(jù)庫

十六進(jìn)制轉(zhuǎn)化為十進(jìn)制:to_number()

SQL> select to_number('a','x') from dual;
TO_NUMBER('A','X')
------------------
                10

十進(jìn)制轉(zhuǎn)化為十六進(jìn)制:to_char()

SQL> select to_char(10,'xxx') from dual;
TO_CHAR(10,'
------------
   a

二進(jìn)制沒有辦法直接轉(zhuǎn)化可以通過函數(shù)實(shí)現(xiàn):

十進(jìn)制轉(zhuǎn)化為二進(jìn)制

CREATE OR REPLACE FUNCTION NUMBER_TO_BIT(V_NUM NUMBER)
RETURN VARCHAR IS V_RTN VARCHAR(8);--注意返回列長(zhǎng)度
  V_N1  NUMBER;
  V_N2  NUMBER;
BEGIN
V_N1 := V_NUM;
    LOOP
      V_N2  := MOD(V_N1, 2);
      V_N1  := ABS(TRUNC(V_N1 / 2)); --取商的絕對(duì)值
      V_RTN := TO_CHAR(V_N2) || V_RTN;
      EXIT WHEN V_N1 = 0;
    END LOOP;
--返回二進(jìn)制長(zhǎng)度
 SELECT lpad(V_RTN,8,0) --八位不足補(bǔ)0
    INTO   V_RTN
    FROM dual;
return V_RTN;
end;

二進(jìn)制轉(zhuǎn)化為十進(jìn)制:

CREATE OR REPLACE FUNCTION BIT_TO_NUMBER(P_BIN IN VARCHAR2) RETURN NUMBER 
AS
  V_SQL VARCHAR2(30000) := 'SELECT BIN_TO_NUM(';
  V_RETURN NUMBER;
BEGIN
  IF LENGTH(P_BIN) >= 256 THEN
    RAISE_APPLICATION_ERROR(-20001, 'INPUT BIN TOO LONG!');
  END IF;
  IF LTRIM(P_BIN, '01') IS NOT NULL THEN
    RAISE_APPLICATION_ERROR(-20002, 'INPUT STR IS NOT VALID BIN 
VALUE!');
  END IF;
  FOR I IN 1 .. LENGTH(P_BIN) LOOP
    V_SQL := V_SQL || SUBSTR(P_BIN, I, 1) || ',';
  END LOOP;
  V_SQL := RTRIM(V_SQL, ',') || ') FROM DUAL';
  EXECUTE IMMEDIATE V_SQL
    INTO V_RETURN;
  RETURN V_RETURN;
END;

創(chuàng)建函數(shù)同義詞

create public synonym number_to_bit for number_to_bit;
grant execute on number_to_bit to public

十六轉(zhuǎn)二和二轉(zhuǎn)十六,則可以結(jié)合十轉(zhuǎn)十六函數(shù)和二轉(zhuǎn)十函數(shù)進(jìn)行,這里不在額外舉例。


ASCII碼及ORACLE元數(shù)據(jù)轉(zhuǎn)換函數(shù):RAWTOHEX和HEXTORAW

SQL> select rawtohex(1) from dual;
RAWTOHEX(1)
------------
C102

SQL> select rawtohex('1') from dual;
RAWTOH
------
31

SQL> select rawtohex('a') from dual;
RAWTOH
------
61

SQL> select rawtohex('A') from dual;
RAWTOH
------
41

SQL> select hextoraw('A') from dual;
HE
--
0A

SQL> select hextoraw('1') from dual;
HE
--
01


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI