以前处理LOB字段都是使用DBMS_LOB包,最近看了文档才发现,原来很多常用的字符函数都是支持LOB字段的。

建立一个测试表:

SQL> CREATE TABLE T_LOB (ID NUMBER, CONTENTS CLOB);

Table created.

SQL> DECLARE

2     V_LOB CLOB;

3  BEGIN

4        INSERT INTO T_LOB

5     VALUES (1, EMPTY_CLOB())

6     RETURN  CONTENTS INTO V_LOB;

7     FOR I IN 1..100 LOOP

8             DBMS_LOB.WRITEAPPEND(V_LOB, 32767, LPAD('A', 32767, 'A'));

9     END LOOP;

10  END;

11  /

PL/SQL procedure successfully completed.

SQL> SELECT ID, DBMS_LOB.GETLENGTH(CONTENTS) FROM T_LOB;

ID DBMS_LOB.GETLENGTH(CONTENTS)

---------- ----------------------------

1                      3276700

SQL> SELECT ID, LENGTH(CONTENTS) FROM T_LOB;

ID LENGTH(CONTENTS)

---------- ----------------

1          3276700

这里的LENGTH函数显然不是对CLOB进行了隐式的TO_CHAR转换,因为那样的话,要不然因为CLOB长度太大而报错,要不然CLOB自动截取前4000个字符而LENGTH返回的长度则是4000。这里的LENGTH函数明显接收的是CLOB类型的参数。

除了LENGTH外,常用的INSTR、SUBSTR等都是支持LOB字段的:

SQL> DECLARE

2     V_LOB CLOB;

3  BEGIN

4     SELECT CONTENTS

5     INTO V_LOB

6     FROM T_LOB

7     WHERE ID = 1

8     FOR UPDATE;

9     DBMS_LOB.WRITEAPPEND(V_LOB, 1000, RPAD('BCDEFG', 1000, 'A'));

10     COMMIT;

11  END;

12  /

PL/SQL procedure successfully completed.

SQL> SELECT DBMS_LOB.INSTR(CONTENTS, 'B')

2  FROM T_LOB

3  WHERE ID = 1;

DBMS_LOB.INSTR(CONTENTS,'B')

----------------------------

3276701

SQL> SELECT INSTR(CONTENTS, 'B')

2  FROM T_LOB

3  WHERE ID = 1;

INSTR(CONTENTS,'B')

-------------------

3276701

SQL> SELECT DBMS_LOB.SUBSTR(CONTENTS, 10, 3276701)

2  FROM T_LOB

3  WHERE ID = 1;

DBMS_LOB.SUBSTR(CONTENTS,10,3276701)

-------------------------------------------------------------------------------------------

BCDEFGAAAA

SQL> SELECT SUBSTR(CONTENTS, 3276701, 10)

2  FROM T_LOB

3  WHERE ID = 1;

SUBSTR(CONTENTS,3276701,10)

--------------------------------------------------------------------------------

BCDEFGAAAA

另外,LPAD、RPAD以及LTRIM和RTRIM也是支持CLOB类型的:

SQL> SELECT LTRIM(RTRIM(CONTENTS, 'A'), 'A')

2  FROM T_LOB

3  WHERE ID = 1;

LTRIM(RTRIM(CONTENTS,'A'),'A')

--------------------------------------------------------------------------------

BCDEFG

SQL> SELECT LENGTH(LPAD(CONTENTS, 10000000, 'B'))

2  FROM T_LOB

3  WHERE ID = 1;

LENGTH(LPAD(CONTENTS,10000000,'B'))

-----------------------------------

10000000

字符连接操作||也支持LOB类型:

SQL> SELECT LENGTH(CONTENTS || CONTENTS)

2  FROM T_LOB

3  WHERE ID = 1;

LENGTH(CONTENTS||CONTENTS)

--------------------------

6555400

如果想找更加详细的支持LOB的函数说明可以参考LOB相关的文档。

oracle lob函数,Oracle可以处理LOB字段的常用字符函数相关推荐

  1. Oracle可以处理LOB字段的常用字符函数

    以前处理LOB字段都是使用DBMS_LOB包,最近看了文档才发现,原来很多常用的字符函数都是支持LOB字段的. 建立一个测试表: SQL> CREATE TABLE T_LOB (ID NUMB ...

  2. oracle常用的字符串函数,Oracle的常用字符函数实验展示

    Oracle提供了众多实用的字符函数,在众多的字符函数中常用的并不多,精通常用的几个字符函数便可游刃有余. 通过这个小文儿简单演示一下常用字符函数的用法,供参考. 1.实验预备动作 1)创建实验表T ...

  3. Oracle 常用字符函数

    Oracle 常用字符函数 1 LOWER(char):字符串全部转化为小写格式 2 UPPER(char):字符串全部转化为大写格式 3 INITCAP('char'):每个单词首字母大写,其余小写 ...

  4. db2 replace函数的用法_SQL基础知识:常用字符处理函数

    原标题:SQL基础知识:常用字符处理函数 作者:丶平凡世界

  5. linux系统时间函数,Linux时间时区详解与常用时间函数

    时间与时区 整个地球分为二十四时区,每个时区都有自己的本地时间. UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT = UTC),格林威治时间和UTC时间都用秒数来计算的. ...

  6. 写出python字符串三种常用的函数或方法_python中几种常用字符串函数

    1.lower()把所有字符换成小写 2.upper()把所有字符换成大写 3.swapcase()大小写互换 4.title()把每个单词首字母大写,他是以所有英文字母的字符来区别是否为一个单词的, ...

  7. mysql字符类型总结及常用字符函数

    常用字符串函数: concat(s1,s2,s3..)       连接s1,s2,...sn为一个字符串 INSERT(str,x,y,instr)将字符串str从x位置开始,y个字符串替换为字符串 ...

  8. python有哪些函数怎么用_必须掌握的常用python函数有哪些?

    必须掌握的常用python函数有哪些? 更新时间:2020年11月02日   作者:spoto 必须掌握的常用Python的安装设置过程中需要注意的事项,今天我们就另一个学员们经常询问的问题进行解答. ...

  9. mysql 函数返回查询结果_MySQL数据库中常用查询函数简介

    MYSQL中的常用函数 count(*)--- 相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录. select count(*) from yinxiong; Count(列名) ...

  10. 运算除法的计算机函数,2、Python基础--除法、常用数学函数(示例代码)

    整数与整数相除: >>> 2/5 0 >>> 2.0/5 0.4 >>> 2/5.0 0.4 >>> 2.0/5.0 0.4 & ...

最新文章

  1. 多校 Babelfish
  2. 基于thrift的微服务框架
  3. vm安装u盘linux,vmware 安装centos 插入u盘报错,大神请指导
  4. Hibernate关于父类子类的映射
  5. apicloud手机查看效果
  6. 乘势而起,走进2019年风口“边缘计算”
  7. C++socket编程(二):系统socket库介绍
  8. ubuntu16.04下安装openssh-server报依赖错误的解决方法
  9. JavaWeb——response与request
  10. 【OpenCV笔记】光流法之金字塔Lucas-Kanade
  11. Liunx配置tomcat
  12. iphone 4 微信版本过低
  13. 解决MySQL远程过程调用失败
  14. 使用酷狗音乐api实现歌曲的搜索和下载
  15. 联想Y7000找不到蓝牙,误删了设备管理器的蓝牙解决方法
  16. 使用everything批量修改文件名
  17. PHP自学笔记 ---李炎恢老师PHP第一季 TestGuest1.1 密码处理+1.2可选验证
  18. 银笺生花,伴你浪迹天涯
  19. 路由与交换系列之简单的路由策略与默认路由汇总路由的运用
  20. My Twenty-Eighth Page - 滑动窗口最大值 - By Nicolas

热门文章

  1. RK平台RAM和ROM容量计算
  2. 如何推广自己的新网站
  3. 【两台电脑之间实现鼠标键盘共享】
  4. 第五届A/B组 地宫取宝 JAVA
  5. MySql基础篇之SQL语句(DDL、DML、DQL、RCL)
  6. iPhone 如何设置自定义铃声 (更新至iOS13 and macOS Catalina)
  7. 跟着ALEX 学python day2 基础2 模块 数据类型 运算符 列表 元组 字典 字符串的常用操作...
  8. 【设计模式】:单例设计模式深究
  9. ibd 导入mysql_mysql导入frm和ibd文件还原数据
  10. Visual SourceSafe 2005 简体中文语言包