解决方案 »

  1.   

    说错了,是这样:前面6位是日期,中间4位是字符串,后面6位是数字型的,
    如 130110  03f0   000005,请转为10位数字型的,保证唯一,谢谢,oracle
      

  2.   

    有个人这样弄的,
    select trim(to_char(to_number(substr('13011003f0000005',0,6)),xxxxx)|| trim(to_char(to_number(substr('13011003f0000005',11,6)),0000x) from dual;
    的,不知道xxxxx和0000x为什么意思啊
      

  3.   

    如果跟源数据没什么关联,只要求唯一,直接生产随机数就行了:生产10位的随机数select substr(cast(dbms_random.value as varchar2(38)),3,10) from dual ;
      

  4.   

    最简单的把这前后加起来的12位连起来看成是12位的数字,然后把他to_char转化为16进制即可
    SELECT to_char(130110000005,'XXXXXXXXXX') FROM DUAL;
      

  5.   

    在截出来的字符串取10位不就行了
    select substr(substr('13011003f0000005',0,6)||substr('13011003f0000005',10,6),dbms_random.value(0,4),10) from dual
      

  6.   

    如果跟源数据没什么关联,只要求唯一,直接生产随机数就行了:生产10位的随机数
    select substr(cast(dbms_random.value as varchar2(38)),3,10) from dual ;
    学习了oracle中CAST函数的用法