如何在oracle中增加十六进制值

如何在oracle中增加十六进制值,oracle,hex,increment,Oracle,Hex,Increment,我正在尝试增加oracle表中id定义为raw的一列: ID VALUE ---------- 1 A14 2 B13 3 C15 4 D16 我需要 ID VALUE ---------- 1 A24 2 B23 3 C25 4 D26 oracle中是否有任何函数如何递增? 感谢对于十六进制数字使用到_NUMBER和到_CHAR格式掩码X: Oracle 11g R2架构设置: CREATE TABLE TABL

我正在尝试增加oracle表中id定义为raw的一列:

ID    VALUE
----------
1    A14
2    B13 
3    C15
4    D16 
我需要

   ID    VALUE
----------
1    A24
2    B23 
3    C25
4    D26 
oracle中是否有任何函数如何递增?
感谢对于十六进制数字使用
到_NUMBER
到_CHAR
格式掩码
X

Oracle 11g R2架构设置

CREATE TABLE TABLE_NAME (
  ID    INTEGER,
  VALUE VARCHAR2(20)
);

INSERT INTO TABLE_NAME
SELECT 1, 'A14' FROM DUAL UNION ALL
SELECT 2, 'B13' FROM DUAL UNION ALL
SELECT 3, 'C15' FROM DUAL UNION ALL
SELECT 4, 'D16' FROM DUAL UNION ALL
SELECT 5, 'FFF' FROM DUAL;

UPDATE table_name
SET value = TO_CHAR( TO_NUMBER( value, 'XXXX' ) + TO_NUMBER( '10', 'XX' ), 'FMXXXX' );
SELECT * FROM table_name
| ID | VALUE |
|----|-------|
|  1 |   A24 |
|  2 |   B23 |
|  3 |   C25 |
|  4 |   D26 |
|  5 |  100F |
查询1

CREATE TABLE TABLE_NAME (
  ID    INTEGER,
  VALUE VARCHAR2(20)
);

INSERT INTO TABLE_NAME
SELECT 1, 'A14' FROM DUAL UNION ALL
SELECT 2, 'B13' FROM DUAL UNION ALL
SELECT 3, 'C15' FROM DUAL UNION ALL
SELECT 4, 'D16' FROM DUAL UNION ALL
SELECT 5, 'FFF' FROM DUAL;

UPDATE table_name
SET value = TO_CHAR( TO_NUMBER( value, 'XXXX' ) + TO_NUMBER( '10', 'XX' ), 'FMXXXX' );
SELECT * FROM table_name
| ID | VALUE |
|----|-------|
|  1 |   A24 |
|  2 |   B23 |
|  3 |   C25 |
|  4 |   D26 |
|  5 |  100F |

CREATE TABLE TABLE_NAME (
  ID    INTEGER,
  VALUE VARCHAR2(20)
);

INSERT INTO TABLE_NAME
SELECT 1, 'A14' FROM DUAL UNION ALL
SELECT 2, 'B13' FROM DUAL UNION ALL
SELECT 3, 'C15' FROM DUAL UNION ALL
SELECT 4, 'D16' FROM DUAL UNION ALL
SELECT 5, 'FFF' FROM DUAL;

UPDATE table_name
SET value = TO_CHAR( TO_NUMBER( value, 'XXXX' ) + TO_NUMBER( '10', 'XX' ), 'FMXXXX' );
SELECT * FROM table_name
| ID | VALUE |
|----|-------|
|  1 |   A24 |
|  2 |   B23 |
|  3 |   C25 |
|  4 |   D26 |
|  5 |  100F |

对于十六进制数字,使用格式掩码
X
到_NUMBER
到_CHAR

Oracle 11g R2架构设置

CREATE TABLE TABLE_NAME (
  ID    INTEGER,
  VALUE VARCHAR2(20)
);

INSERT INTO TABLE_NAME
SELECT 1, 'A14' FROM DUAL UNION ALL
SELECT 2, 'B13' FROM DUAL UNION ALL
SELECT 3, 'C15' FROM DUAL UNION ALL
SELECT 4, 'D16' FROM DUAL UNION ALL
SELECT 5, 'FFF' FROM DUAL;

UPDATE table_name
SET value = TO_CHAR( TO_NUMBER( value, 'XXXX' ) + TO_NUMBER( '10', 'XX' ), 'FMXXXX' );
SELECT * FROM table_name
| ID | VALUE |
|----|-------|
|  1 |   A24 |
|  2 |   B23 |
|  3 |   C25 |
|  4 |   D26 |
|  5 |  100F |
查询1

CREATE TABLE TABLE_NAME (
  ID    INTEGER,
  VALUE VARCHAR2(20)
);

INSERT INTO TABLE_NAME
SELECT 1, 'A14' FROM DUAL UNION ALL
SELECT 2, 'B13' FROM DUAL UNION ALL
SELECT 3, 'C15' FROM DUAL UNION ALL
SELECT 4, 'D16' FROM DUAL UNION ALL
SELECT 5, 'FFF' FROM DUAL;

UPDATE table_name
SET value = TO_CHAR( TO_NUMBER( value, 'XXXX' ) + TO_NUMBER( '10', 'XX' ), 'FMXXXX' );
SELECT * FROM table_name
| ID | VALUE |
|----|-------|
|  1 |   A24 |
|  2 |   B23 |
|  3 |   C25 |
|  4 |   D26 |
|  5 |  100F |

CREATE TABLE TABLE_NAME (
  ID    INTEGER,
  VALUE VARCHAR2(20)
);

INSERT INTO TABLE_NAME
SELECT 1, 'A14' FROM DUAL UNION ALL
SELECT 2, 'B13' FROM DUAL UNION ALL
SELECT 3, 'C15' FROM DUAL UNION ALL
SELECT 4, 'D16' FROM DUAL UNION ALL
SELECT 5, 'FFF' FROM DUAL;

UPDATE table_name
SET value = TO_CHAR( TO_NUMBER( value, 'XXXX' ) + TO_NUMBER( '10', 'XX' ), 'FMXXXX' );
SELECT * FROM table_name
| ID | VALUE |
|----|-------|
|  1 |   A24 |
|  2 |   B23 |
|  3 |   C25 |
|  4 |   D26 |
|  5 |  100F |

A14
似乎不是十六进制数。你只是想增加numric吗part@XING
A14
是一个十六进制数
a=10
所以它是
10*16^2+1*16^1+4*16^4=2580
@MT0谢谢你的解释,但是
从dual中选择rawtohex(2580)
不会给我返回
A14
@XING
选择到数字('A14','XXX'),返回字符(2580,'XXX')来自DUAL;
@XING-它将Oracle用于存储值的字节转换为十六进制so
DUMP(2580)
给出
Typ=2 Len=3:194,26,81
,因此底层字节是
194
26
81
,然后
到_CHAR(194,'FMXX')|到|CHAR(26,'FMXX')|到|到|CHAR(81,'FMXX'))
C21A51
这就是
RAWTOHEX(2580)的功能
gives.
A14
似乎不是十六进制数。您只是想增加numric吗part@XING
A14
是一个十六进制数
a=10
所以它是
10*16^2+1*16^1+4*16^4=2580
@MT0感谢您的解释,但是
选择rawtohex(2580)from dual
不给我返回
A14
@XING
选择TO_NUMBER('A14','XXX'),从dual返回到_CHAR(2580,'XXX');
@XING-它将Oracle用于存储值的字节转换为十六进制,因此
转储(2580)
给出
Typ=2 Len=3:194,26,81
因此底层字节是
194
26
81
,然后
到_CHAR(194,'FMXX')|到_CHAR(26,'FMXX')|到_CHAR 81,'FMXX')
C21A51
这就是
RAWTOHEX(2580)
给出的。