ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle的long类型与varchar类型转换

oracle的long类型与varchar类型转换

原创 Linux操作系统 作者:webseven 时间:2012-11-07 16:53:50 1 删除 编辑

long列是不允许出现在 create table xx as select * from yyy 里,否则报如下错误:
    SQL> create table mytest1(remark) as select remark from workflow_requestLog where rownum<10;                                                                          
    create table mytest1(remark) as select remark from workflow_requestLog where rownum<10
                                       *
    第 1 行出现错误:
    ORA-00997: 非法使用 LONG 数据类型

oracle建议使用clob\blob\nclob来代替,如下:

    create table mytest3(remark) as select to_lob(remark) from workflow_requestLog where rownum<10;
    --可以这样创建,不过默认类型就成了clob

然后,使用dbms_lob.substr取出clob中的字符:
    select dbms_lob.substr(remark,4000,1) from mytest3;

直接在long列上先转换为lob,在转换为varchar则是不允许的,如下:
    SQL> select dbms_lob.substr(to_lob(remark),1,500) from workflow_requestLog where rownum<10;                                                                           
    select dbms_lob.substr(to_lob(remark),1,500) from workflow_requestLog where rownum<10
                       *
    第 1 行出现错误:
    ORA-00932: 数据类型不一致: 应为 -, 但却获得 LONG


 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26442672/viewspace-748582/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-01-30

  • 博文量
    20
  • 访问量
    136482