将现有十进制数转为十六进制。1-FF,FF为15*16+1*15=255也够你用了吧
解决方案 »
- ORA-04098: 触发器 'SCOTT.ORDERDELETE' 无效且未通过重新验证
- oracle 的备份与恢复
- oracle 的 全局静态变量如何使用
- 分页查询的奇怪问题
- sql server 往oracle 中导入数据库的错误提示??
- 关于oracle tns 服务问题
- 请教: 如何清理表空间
- sos,exp问题
- 请各位大侠看看我这个触发器的代码有什么错误!!!
- oracle sql developer 我关闭连接后就再也显示不出来了
- win7 家庭版 32位 安装oracle11g
- 手动创建oracle数据库总是failure in processing system parameters!我快要崩溃了!新手求解答
十进制-->十六进制
select to_char(254,'XX') from dual;
十六进制-->十进制
select to_number('FF','XX') from dual;
SELECT 'A3' FROM dual )
SELECT ltrim(DECODE(SUBSTR(MAX(TO_NUMBER(DECODE(SUBSTR(LPAD(A, 3, 0), 1, 2),'0A',10,'0B','11','00','00','01','01') || SUBSTR(LPAD(A, 3, 0), 3, 1)))+1,1,2),
'10','0A','11','0B','00','00','01','01') || SUBSTR(MAX(TO_NUMBER(DECODE(SUBSTR(LPAD(A, 3, 0), 1, 2),'0A',10,'0B','11','00','00','01','01') || SUBSTR(LPAD(A, 3, 0), 3, 1)))+1,3,1),'0')
FROM TEST
没想到什么好办法,这个算是实现了你的功能,你自己吧decode部分补充完整吧
select decode((substr('A0', 2, 1) + 1),
10,
chr(ascii(substr('A0', 1, 1)) + 1),
substr('A0', 1, 1)) ||
decode((substr('A0', 2, 1) + 1), 10, 0, substr('A0', 2, 1) + 1)
from dual;
select decode((substr('A9', 2, 1) + 1),
10,
chr(ascii(substr('A9', 1, 1)) + 1),
substr('A9', 1, 1)) ||
decode((substr('A9', 2, 1) + 1), 10, 0, substr('A9', 2, 1) + 1)
from dual;
CREATE OR REPLACE FUNCTION fun_id RETURN VARCHAR2 AS
v_id VARCHAR2(2);
BEGIN
SELECT MAX(id) INTO v_id FROM tt;
IF (v_id='99') THEN
return 'A0';
ELSIF (substr(v_id, 2, 1) = '9') THEN
v_id := chr(ascii(substr(v_id, 1, 1)) + 1) || 0 ;
RETURN v_id ;
ELSE
v_id:=substr(v_id,1,1)||(substr(v_id,2,1)+1);
RETURN v_id ;
END IF ;
EXCEPTION WHEN OTHERS
THEN
RETURN('ee');
END;写了个函数帮助实现了这个功能
应该能满足你的需要