Oracle通过函数进行进制转化
admin
2023-05-09 21:21:50
0

十六进制转化为十进制: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;
BEGIN
V_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)
------------
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


相关内容

热门资讯

燃气热水器需要多少升的 一般在选择燃气热水器的时候,按照家庭内部的使用水的人数来决定,一般如果四个人的话,可以选择40到60...
32升燃气热水器安装方法 燃气热水器是现代家庭生活中非常重要的设备,它不仅方便了我们的生活,提高了生活品质,同时也需要我们重视...
燃气热水器12升和13升的区别... 燃气热水器12升和13升的区别大吗:区别不大。12升就是热水器的额定加热能力是每分钟可以提升水温25...
燃气热水器温度升不上去的原因是... 1、燃气的压力不够大,导致水温无法升高。2、热水器内部的电池电量已经不够运转热水器。3、没有做好卫生...
海尔滚筒洗衣机衣服放进后门锁不... 卡锁松懈或老化故障可以找专业的售后将卡锁部分卸下换一个新的就可以正常使用。可以适当的拿出些许衣服以释...
小米、特斯拉、比亚迪相继调价 ...   小米、特斯拉、比亚迪相继调价  【小米、特斯拉、比亚迪相继调价】2026年5月,中国新能源车市上...
雨雨雨雨雨雨!14日至19日河... 晴雨转换!今天起河南雨雨雨雨雨雨本周河南天气呈现先晴后雨的特点,在经历了前半段晴热模式之后,今天我省...
进出口总量全省第6、鲜苹果出口... 2026年一季度,三门峡市外贸经济稳健向好,交出一份亮眼成绩单:全市实现进出口总值57.9亿元,同比...
法国外交部回应特朗普访华 据凤凰卫视报道,美国总统特朗普访问中国,中美关系走向引发欧洲关注。法国外交部发言人5月13日在巴黎接...
特朗普社媒实际发帖人现身:34... 现年34岁的行政助理娜塔莉·哈普是美国总统特朗普的“资深心腹”,目前已成为协助特朗普在社交平台“真实...