oracle中对LONG列进行查询
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列进行查询的更多相关文章
- Oracle中“行转列”的实现方式
		在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用“行转列”: scott的emp的原始数据为: EMPNO ENAM ... 
- Oracle中把一张表查询结果插入到另一张表中
		1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: inse ... 
- 在oracle中怎么通过字段名查询其所在的表
		ora = //连接描述符名:ora (description = //描述 (address = //网络地址之一 (protocol = tcp) //网络协议(tcp表示TCP/IP协议) (h ... 
- Oracle 中的伪列
		昨天做了一个Oracle PL/SQL 相关的测试,其中有一道这样的题目: 下列那些是Oracle的伪列(ACD) A.ROWID B.ROW_NUMBER() C.LEVEL D.RO ... 
- Oracle中的伪列
		分页查询中,需要用到伪列rownum,代码如下: select * from (select rownum rn, name from cost where rownum <= 6) where ... 
- Oracle中ROWNUM伪列和ROWID伪列的用法与区别
		做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两 ... 
- Oracle中"行转列"的实现方式
		在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用"行转列": scott的emp的原始数据为: ... 
- oracle中的rowid--伪列-删除表中的重复内容-实用
		1.rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行. 2.rowid是存储在索引中的一组既定的值(当行确定后).我们可以像表中普通的列一样将它选出来. 3 ... 
- Oracle 中的SELECT 关键字(查询、检索)
		1. SELECT 关键字用法: 检索单个列:select 列名 from 表名: 例:select ename from emp;检索多个列: select [列1,列2, ... ,列N] fro ... 
随机推荐
- Hbase学习笔记(安装和基础知识及操作)
			1.Hbase简介 1.面向列的分布式数据库 2. 以HDFS作为文件系统 3. 利用MapReduce处理Hbase中海量数据 4. ZookKeeper作为协调工具 5. sqoop提供Hbase ... 
- python运算符的优先级
			运算符优先级 如果你有一个如2 + 3 * 4那样的表达式,是先做加法呢,还是先做乘法?我们的中学数学告诉我们应当先做乘法——这意味着乘法运算符的优先级高于加法运算符. 下面这个表给出Python的运 ... 
- win7安装gevent时报错 whl is not a supported wheel on this platform.
			1.首先强烈推荐一个站点 在使用pip安装python协程包gevent时,需要很多依赖,很多需要编译的底层支持等等,不能拿来就用.总之很多麻烦的事儿. 这个强烈推荐一个站点,里面都是一些编译好的py ... 
- 《Nagios系统监控实践》一书出版
			本书是我的第一本译著,有此机会实属机缘巧合.虽然使用Nagios只有一年多的时间,但是作为用户,我深感其设计的简洁与高效—没有一丝多余的东西.因为工作的关系,要求对各个领域都有所了解,所以没有仔细地阅 ... 
- VIP网络水军账号
			作为一个技术部的组长,主管公司用户相关的项目.今天一名营销同事找我说他想长生3000个水军账号,我首先就想到了以下几个问题: 1.如何实现 2.产生水军对运营项目的影响,主要问题就是一个真实性问题. ... 
- 在中国Windows Azure服务中创建应用程序的一些不同之处
			Azure 中的托管服务由一个应用程序(用于在托管服务中运行)和 XML 配置文件(定义托管服务的运行方式)组成.托管服务同时使用服务定义文件 (.csdef) 和配置文件 (.cscfg).有关详细 ... 
- MySQL在线备份与恢复工具 --> Xtrabackup
			1 Xtrabackup原理简介 xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. ... 
- 【noip2012】开车旅行
			题意: 给n个点的海拔h[i](不同点海拔不同) 两点的距离为abs(h[i]-h[j]) 有a.b两人轮流开车(只能往下标大的地方开) a每次会开到里当前点第二近的点 b每次会开到离当前点最近的点( ... 
- hdfs里的文件下载HDFS之fsimage、metadata、edits、fstime(二十七)
			首先,要有这个观念,元数据信息(fsimage + editslog). fsimage是在磁盘 metadata是在内存 ********************fsimage把内存的,序列化到磁盘 ... 
- Introduction to DTD
			A Document Type Definition (DTD) defines the legal building blocks of an XML document. It defines th ... 
