以前处理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视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html

转载于:https://blog.51cto.com/19880614/1219441

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

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

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

  2. Oracle 常用字符函数

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

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

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

  4. oracle plsql 字符串长度,plsql中常用字符串函数

    1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space f ...

  5. 【Oracle 数据库】奶妈式教程 day12 字符函数

    1.upper(STR) 转大写 2.lower(STR) 转小写 3.initcap(str) 转首字母大写 多个单词都会变成首字母大写.英文字母中间有非英文的字母就认为是两个单词 SELECT U ...

  6. Oracle 语言分类 数据类型 数据类型转换 常用函数 集合操作 子查询

    SQL分类 SQL(Structure Query Language)语言是数据库的核心语言.SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL.1 ...

  7. oracle中LOB字段相关概念(自动创建LOB索引段和重建索引方法)

    OBs,或Large Objects字段,是Oracle中用于处理存储非字符数据推荐的一种字段类型,例如mp3,video,图片,和long字符串数据.二进制大对象,或BLOBs,字符大对象,或CLO ...

  8. oracle lob 字段清理,Oracle数据库高水位释放——LOB字段空间释放

    在Oracle数据库中表随着数据增长,所占磁盘容量也会增长,当表中数据不再需要时,对表进行delete操作,表中代表所占空间的标志-高水位,不会随着数据删除而下降,高水位没有变化,即使删除了数据库,表 ...

  9. 我踩过的坑(二)替换Oracle字段中的字符

    项目演示时要求把数据中真实地名.人名全部替换掉 1.替换表中字段的指定字符 update table_name  set table_name.column_name = replace(table_ ...

最新文章

  1. 让我们来谈谈对Linux的认识,值得每一位运维人员深读
  2. linux配置ip 网关 和dns(转)
  3. 日记 [2007年01月24日]服务器加强安全
  4. MySQL中的条件赋值
  5. 解决JSP页面获取的数据库数据乱码问题
  6. Idea maven项目不能新建package和class的解决
  7. python识别简单训练模型_使用已经得到的keras模型识别自己手写的数字方式
  8. Sprint3(12.18)总结
  9. 北师大版图形的旋转二教案_北师大版三年级数学下册微课精讲+课件教案试卷(文末下载)...
  10. bigemap 百度教程
  11. 【数值计算方法】学习笔记
  12. ios免越狱自签工具
  13. 2022-2027年中国缝制机械行业市场全景评估及发展战略规划报告
  14. uniapp 引用图片地址
  15. python2在线编译器_C/C++/Python在线编译器
  16. 选择合适的 Go 字符串拼接方式
  17. ExoPlayer播放器剖析(六)ExoPlayer同步机制分析
  18. 独孤思维:赚钱的黄金法则
  19. 三星I9220刷机包 新蜂ROM V4.1 高级设置 全透明天气插件
  20. 计算机实验报告网络应用,《计算机网络应用》实验报告(2016春).doc

热门文章

  1. 非常有创意的音乐网站
  2. mac远程redis_MAC安装redis
  3. python词频云图_python安娜卡列妮娜词云图制作
  4. 怎样知道邮箱的端口_网络端口介绍
  5. android 防止截屏录屏
  6. UGUI全面实践教程
  7. 怎么判断膝关节错位_膝关节韧带损伤该如何处理——健康科普
  8. python脚本控制手机app_Python+Appium学习之启动手机APP或者浏览器
  9. linux下装php,Linux下安装php
  10. PSVR开发者需要了解的9件事