Oracle自定义函数:将使用点分隔符的编码转成层级码格式的编码

维护一个旧的系统,表设计中只有编码,而没有其他排序相关的字段,然后根据编码排序出现了顺序错乱的问题。

具体的解决方案,就是使用PL/SQL写一个自定义函数,用来将使用点分隔符的编码转成层级码格式的编码,比如1.1.1.1转成001001001。

    RETURN VAR_ZERO_CODE;
  END;

创建完自定义函数之后,就可以拿来使用了(我这里定义的是10位的层级码)。

SELECT POINT_CODE_INTO_ZARO_CODE('1.2.3') CODE FROM DUAL; -- 000000000100000000020000000003
SELECT POINT_CODE_INTO_ZARO_CODE('110') CODE FROM DUAL; -- 0000000110

这样,在排序的时候在ORDER BY子句中加上转换后的编码,就可以实现正常排序了。

猜你喜欢

转载自www.linuxidc.com/Linux/2019-11/161533.htm
今日推荐