数据本身是由多个二进制数据拼接出来的,存入数据库时是按照varchar2(66)存储的。。现在要解析出来,在sqlserver中是这么写的
    select cast(substring(cast(ageing_a as varbinary),1,5) as bigint) as age1,
       cast(substring(cast(ageing_a as varbinary),6,5) as bigint) as age2,
       cast(substring(cast(ageing_a as varbinary),11,5) as bigint) as age3,
       cast(substring(cast(ageing_a as varbinary),16,5) as bigint) as age4,
       cast(substring(cast(ageing_a as varbinary),21,5) as bigint) as age5,
       cast(substring(cast(ageing_a as varbinary),26,5) as bigint) as age6
    from tablename 不太熟悉oracle,忘各位帮忙,看看在oracle中使用pl/sql应该怎么写。谢谢。

解决方案 »

  1.   

    select TO_NUMBER(substr(HEX_TO_RAW(ageing_a),1,5)) age1,
           TO_NUMBER(substr(HEX_TO_RAW(ageing_a),6,5)) age2, 
           TO_NUMBER(substr(HEX_TO_RAW(ageing_a),11,5)) age3,
           TO_NUMBER(substr(HEX_TO_RAW(ageing_a),16,5)) age4, 
           TO_NUMBER(substr(HEX_TO_RAW(ageing_a),21,5)) age5,
           TO_NUMBER(substr(HEX_TO_RAW(ageing_a),26,5)) age6
    from tablename   
      

  2.   

    HEX_TO_RAW  这个好像是十六进制转二进制的啊。。数据实际是二进制的,但被存储为字符串