Oracle通過函數進行進位轉化

來源:互聯網
上載者:User

標籤:oracle進位化函數

十六進位轉化為十進位:to_number()

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

十進位轉化為十六進位:to_char()

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

二進位沒有辦法直接轉化可以通過函數實現:

十進位轉化為二進位

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

二進位轉化為十進位:

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;

建立函數同義字

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

十六轉二和二轉十六,則可以結合十轉十六函數和二轉十函數進行,這裡不在額外舉例。


ASCII碼及ORACLE中繼資料轉換函式:RAWTOHEX和HEXTORAW

SQL> select rawtohex(1) from dual;RAWTOHEX(1)------------C102SQL> select rawtohex(‘1‘) from dual;RAWTOH------31SQL> select rawtohex(‘a‘) from dual;RAWTOH------61SQL> select rawtohex(‘A‘) from dual;RAWTOH------41SQL> select hextoraw(‘A‘) from dual;HE--0ASQL> select hextoraw(‘1‘) from dual;HE--01


本文出自 “LinuxOracle” 部落格,請務必保留此出處http://onlinekof2001.blog.51cto.com/3106724/1652746

Oracle通過函數進行進位轉化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.