connect by 十六进制转十进制

来源:互联网 发布:java物业管理系统源码 编辑:程序博客网 时间:2024/05/17 21:55
CREATE OR REPLACE FUNCTION f_hex_2_dec(in_str IN VARCHAR2) RETURN VARCHAR2 IS  ----------------------------------------------------------------------------------------------------------------------  -- 对象名称: f_hex_2_dec  -- 对象描述: 十六进制转换十进制  -- 输入参数: p_str 十六进制字符串  -- 返回结果: 十进制字符串  -- 测试用例: SELECT f_hex_2_dec('78A') FROM dual;  ----------------------------------------------------------------------------------------------------------------------  v_return VARCHAR2(4000);BEGIN  SELECT SUM(data)  INTO   v_return  FROM   (SELECT (CASE UPPER(substr(in_str, rownum, 1))                   WHEN 'A' THEN                    '10'                   WHEN 'B' THEN                    '11'                   WHEN 'C' THEN                    '12'                   WHEN 'D' THEN                    '13'                   WHEN 'E' THEN                    '14'                   WHEN 'F' THEN                    '15'                   ELSE                    substr(p_str, rownum, 1)                 END) * power(16, length(in_str) - rownum) data          FROM   dual          CONNECT BY rownum <= length(in_str));  RETURN v_return;EXCEPTION  WHEN OTHERS THEN    RETURN NULL;END;
SQL> SELECT f_hex_2_dec('10') FROM dual; F_HEX_2_DEC('10')--------------------------------------------------------------------------------16
原创粉丝点击