SQL> CREATE TABLE T_LONG (ID NUMBER, LONG_COL LONG);
  表已创建。
  SQL> INSERT INTO T_LONG VALUES (1, LPAD(1, 32767, ’HELLO WORLD!’));
  已创建 1 行。
  SQL> COMMIT;
  提交完成。
  SQL> SELECT * FROM T_LONG WHERE LONG_COL LIKE ’%WORLD%’
  2 ;
  SELECT * FROM T_LONG WHERE LONG_COL LIKE ’%WORLD%’
  *第 1 行出现错误:
  ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 LONG
  根据Oracle的建议,应该避免再使用LONG类型。如果可能应该使用TO_LOB来重建表,将表中的LONG类型转化为CLOB或BLOB类型。
  这里就不考虑这种方法了,只是讨论一下对于不能重建的表如何进行查询。
  如果表中的数据长度不超过32K的话,可以考虑通过类似下面的PL/SQL代码来实现:
  SQL> SET SERVEROUT ON
  SQL> BEGIN
  2 FOR I IN (SELECT * FROM T_LONG) LOOP
  3 IF INSTR(I.LONG_COL, ’WORLD’) > 0 THEN
  4 DBMS_OUTPUT.PUT_LINE(I.ID);
  5 END IF;
  6 END LOOP;
  7 END;
  8 /
  1
  PL/SQL 过程已成功完成。
  不过PL/SQL代码只能处理不超过32K的数据,超过这个限制,就无法通过PL/SQL来处理。
  好在Oracle的全文索引是支持LONG类型的,建立一个CONTEXT索引,使用全文索引的查询语法就可以解决这个问题:
  SQL> CREATE INDEX IND_T_LONG_COL ON T_LONG(LONG_COL) INDEXTYPE IS CTXSYS.CONTEXT;
  索引已创建。
  SQL> SELECT ID FROM T_LONG WHERE CONTAINS(LONG_COL, ’WORLD’) > 0;
  ID
  ----------
  1

oracle中对LONG列进行查询的更多相关文章

  1. Oracle中“行转列”的实现方式

    在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用“行转列”: scott的emp的原始数据为: EMPNO ENAM ...

  2. Oracle中把一张表查询结果插入到另一张表中

      1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: inse ...

  3. 在oracle中怎么通过字段名查询其所在的表

    ora = //连接描述符名:ora (description = //描述 (address = //网络地址之一 (protocol = tcp) //网络协议(tcp表示TCP/IP协议) (h ...

  4. Oracle 中的伪列

    昨天做了一个Oracle PL/SQL 相关的测试,其中有一道这样的题目:   下列那些是Oracle的伪列(ACD)  A.ROWID   B.ROW_NUMBER()  C.LEVEL  D.RO ...

  5. Oracle中的伪列

    分页查询中,需要用到伪列rownum,代码如下: select * from (select rownum rn, name from cost where rownum <= 6) where ...

  6. Oracle中ROWNUM伪列和ROWID伪列的用法与区别

    做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两 ...

  7. Oracle中"行转列"的实现方式

    在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用"行转列": scott的emp的原始数据为: ...

  8. oracle中的rowid--伪列-删除表中的重复内容-实用

    1.rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行. 2.rowid是存储在索引中的一组既定的值(当行确定后).我们可以像表中普通的列一样将它选出来. 3 ...

  9. Oracle 中的SELECT 关键字(查询、检索)

    1. SELECT 关键字用法: 检索单个列:select 列名 from 表名: 例:select ename from emp;检索多个列: select [列1,列2, ... ,列N] fro ...

随机推荐

  1. java类加载器学习2——自定义类加载器和父类委托机制带来的问题

    一.自定义类加载器的一般步骤 Java的类加载器自从JDK1.2开始便引入了一条机制叫做父类委托机制.一个类需要被加载的时候,JVM先会调用他的父类加载器进行加载,父类调用父类的父类,一直到顶级类加载 ...

  2. ajax post方法

    定义和用法 post() 方法通过 HTTP POST 请求从服务器载入数据. 语法 jQuery.post(url,data,success(data, textStatus, jqXHR),dat ...

  3. HDU 1251-统计难题(Trie)

    题意: 给一组单词 开始提问每次给一个串求该串是上面几个单词的前缀 分析: 没给数据规模,但用链表写ME好几次,又用数组写开小RE了,试了几次才过了,真是醉了... #include <map& ...

  4. MyEclipse的Hibernate Reverse Engineering失败解决方法

    当使用MyEclipse的Hibernate逆向工程功能时,有时出现不成功的情况,点击finish按钮后对应的源文件目录没有生产相关对象,这时应该如何解决呢? 在国内的网站找了很久没找到,最后在国外的 ...

  5. rpi good tutorial

    http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/quick-start/

  6. ubuntu无法进入和引导顺序问题解决

    今天上班过来发现ubuntu无法进入,因为里面有N多资料没有备份,当时很是捉急.不过后来都解决了: 背景: easyBCD安装ubuntu14.07和windows7双系统.基本上这一年多一直用ubu ...

  7. hdu 1877 又一版 A+B

    又一版 A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. [C语言 - 13] 运算符

    算术运算符 运算符的优先级 括号 > 正负 > 数学运算 > 位运算 > 数学对比 > 逻辑对比 > 条件运算 > 赋值运算   A.赋值运算符 复合赋值运算 ...

  9. 牛一网ecshop综合类模板(仿淘常州) for ecshop 2.7.3

    牛一网目前已经开发好这款ecshop综合类/多色系模板,已经开发好多种色系,本模板将会搭配多种颜色让用户选择,以适应 家电数码. 个护化妆. 生鲜水果 . 服饰鞋帽 . 图书音像 . 粮油食品.家具家 ...

  10. JQuery事件处理的注意事项

    1.jQuery 名称冲突 jQuery 使用 $ 符号作为 jQuery 的简介方式. 某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号. jQuery 使用 ...