1. substr函数使用

1.1 substr函数格式 (俗称:字符截取函数)

格式1: substr(string string, int a, int b);
格式2:substr(string string, int a) ;

格式1:
1、string 需要截取的字符串
2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
3、b 要截取的字符串的长度

格式2:
1、string 需要截取的字符串
2、a 可以理解为从第a个字符开始截取后面所有的字符串。

注:https://www.cnblogs.com/dshore123/p/7805050.html

1.2 获取字段长度:

length(string)计算string所占的字符长度:返回字符串的长度,单位是字符

select length('cctv') from dual

https://www.cnblogs.com/qingsong-do/archive/2012/09/28/2707024.html

1.3 检索字符在字符串中的位置

instr
https://blog.csdn.net/l_degege/article/details/112664925

select a.fielddbtype,length(fielddbtype),instr(fielddbtype,'.'),
substr(fielddbtype,instr(fielddbtype,'.')+1,length(fielddbtype))from workflow_billfield a where a.id=50189

2. dbms_lob.substr函数使用

CLOB里存的是2进制
判定长度 dbms_lob.getlength(col1)
获取文本 dbms_lob.substr(col1,n,pos)
dbms_lob.substr(col1,10,1)表示从第1个字节开始取出10个字节

注:https://blog.csdn.net/daxiang12092205/article/details/20283359

-- dbms_lob.substr函数第二个参数有时不能为4000(3960或3000),有时可以(测试数据4000个英文字符)
select dbms_lob.substr(a.txt,3000,1),length(a.txt),DBMS_LOB.getlength(a.txt),a.* from jc_content_txt a
-- 测试表,DBMS_LOB.SUBSTR为4000或5000均可
select DBMS_LOB.SUBSTR(txt,5001) from jc_content_txt_test

以上问题可结合eclipse、jdbc、oracle做一个测试。

dbms_lob.substr第二个参数是要从大型对象中抽取的字节数,这样可以理解测试sql中的4000或5000。

而第一条sql中第二个参数不能为4000(3960或3000),估计是超过varchar2的4k限制(4k指字节还是字符),4k指的是字节。而DBMS_LOB.SUBSTR第二个参数指的是字符的个数(通过测试可验证),它会转成varchar2。

dbms_log.substr的第二个参数是字符数,非字节。

https://blog.csdn.net/swordmanwk/article/details/6204611

http://www.voidcn.com/article/p-tvbhgpdf-byk.html

https://www.thinbug.com/q/1797183

https://www.cnblogs.com/Tty725/p/13750663.html

https://blog.csdn.net/e_wsq/article/details/7068091

https://www.cnblogs.com/grand-jon/p/7389427.html

https://blog.csdn.net/yfleng2002/article/details/7794784

https://www.cnblogs.com/zhixie/p/11968710.html

3.case when 使用

CASEWHEN to_char(a.issuedt,'yyyy-mm-dd hh24:mi:ss') = '1900-01-01 00:00:00' THEN ''ELSE to_char(a.issuedt,'yyyy-mm-dd hh24:mi:ss')
END issuedt ,

注:issuedt是日期类型,该值默认是原点时间。需求是如果是原点时间,则为空。

4. case when 结合getlength

SELECT *
FROM(SELECT A.GUESTBOOK_ID AS ID,A.SITE_ID AS SITEID,A.CREATE_TIME AS CREATETIME,A.IS_CHECKED AS ISCHECKED,A.IS_RECOMMEND AS ISRECOMMEND,B.TITLE,case when DBMS_LOB.getlength(B.CONTENT) <=300 then dbms_lob.substr(B.CONTENT,300,1) else  CONCAT(dbms_lob.substr(B.CONTENT,300,1),'...') end AS CONTENT,dbms_lob.substr(B.REPLY) AS REPLY,B.NAME,A.GUESTBOOKCTG_ID AS CTGID,C.CTG_NAME AS CTGNAMEFROM JC_GUESTBOOK ALEFT JOIN JC_GUESTBOOK_EXT B ON A.GUESTBOOK_ID = B.GUESTBOOK_IDLEFT JOIN JC_GUESTBOOK_CTG C ON A.GUESTBOOKCTG_ID = C.GUESTBOOKCTG_IDUNION ALLSELECT SERVICE_ID AS ID,SITE_ID AS SITEID,CREATE_TIME AS CREATETIME,IS_CHECKED AS ISCHECKED,IS_RECOMMEND,SUBJECT AS TITLE,case when DBMS_LOB.getlength(CONTENT) <=300 then dbms_lob.substr(CONTENT,300,1) else  CONCAT(dbms_lob.substr(CONTENT,300,1),'...') end AS CONTENT,dbms_lob.substr(REPLAY) AS REPLY,NAME,99,'企业服务'FROM JC_ENTERPRISESERVICE) T
WHERE 1=1AND T.ISCHECKED=1ORDER BY T.CREATETIME DESC

oracle字符串处理substr、dbms_lob.substr、case when相关推荐

  1. C++中字符串的截取 str.substr(a,b);

    C++中字符串的截取 str.substr(a,b); #include<bits/stdc++.h> using namespace std;int main() {//str.subs ...

  2. DBMS_LOB.SUBSTR(col1,n,pos) : 获取文本

    DBMS_LOB.SUBSTR(col1,n,pos) : 获取文本 eg: DBMS_LOB.SUBSTR(col1,10,1) 表示从第1个字节开始取出10个字节. DBMS_LOB.SUBSTR ...

  3. php字符串截取substr,php字符串处理函数:substr、mb_substr

    字符串处理在实际应用中会频繁的用到,熟练掌握字符串截取技巧可以简化程序开发中很多代码处理. substr- 返回字符串的子串 string substr(string $string, int $st ...

  4. mysql下SQL注入截取字符串常用函数mid(),substr(),left()

    在sql注入中,往往会用到截取字符串的问题,例如不回显的情况下进行的注入,也成为盲注,这种情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串 mid函数 此函数为截取字符串一部分.MID(c ...

  5. html5 截取字符串,JS截取字符串之substring、substr和slice详解

    本文详细的介绍了JavaScript中substring().substr()和slice()三个js字符串截取的方法,substring()方法用于提取字符串中介于两个指定下标之间的字符.subst ...

  6. oracle字符串清洗、拆分案例

    oracle字符串清洗.拆分案例 需求描述 需求: 对给定的字符,按照点号对其进行拆分并以表的形式返回结果. 解决方法:通过 translate,结合自定义自增表.SUBSTR来实现字符串拆分. SQ ...

  7. oracle字符串函数(转)

    oracle字符串函数[@more@] ASCII Get The ASCII Value Of A Character ASCII(ch VARCHAR2 CHARACTER SET ANY_CS) ...

  8. oracle字符串提取函数,oracle字符串分割和提取函数定义

    oracle字符串分割和提取函数定义 oracle字符串分割和提取 分割 create or replace function Get_StrArrayLength ( av_str varchar2 ...

  9. Oracle拆分字符串及排序,Oracle 字符串查询以及拆分函数

    select id,SUBSTR(detail,INSTR(detail,'hijk')+5,Instr(detail,';abcd=')-INSTR(detail,'def')-5) from( s ...

最新文章

  1. 推荐一篇文章,感觉学完Iterator模式后应当读一读
  2. 解决UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 问题(转)
  3. NYOJ 891 找点
  4. 泰山200机架服务器包含哪些型号_数据中心机房建设中的关键问题都有哪些?
  5. git连接jenkins_开普勒云平台:如何配置gitlab与Jenkins
  6. Hive静态分区表动态分区表
  7. A - 还是畅通工程(最小生成树)
  8. Javascript:利用闭包实现高级排他
  9. SAPI V1.4发布,轻巧的API输出测试组件
  10. 小波神经网络模型的建立,小波神经网络模型matlab
  11. 用74161设计十二进制计数器
  12. 前端js正则表达式2
  13. 在Windows 记事本中快速选中大量文本的方法
  14. 由 tpp.c:63: __pthread_tpp_change_priority failed 引发的思考
  15. 全球及中国浆液阀行业市场深度分析及发展战略咨询报告2022-2028年
  16. 简练软考知识点整理-规划成本管理过程
  17. The.Strain血族
  18. QQ音乐客户端Web页面通用性能优化实践
  19. pyqt_利用ScrollBar控制图片位置(实现滑动效果)
  20. 采用折中方法的计算机系统,计算机系统结构期末复习资料

热门文章

  1. 任正非回应“华为营收下降300亿美元”;今日头条澄清「通讯录不属于用户隐私」;Kotlin 1.3.40发布 | 极客头条...
  2. 马云:用 10% 大脑创造出来的机器不可能毁灭人类
  3. linux通过网关挂在nfs,NFS 网络文件系统挂载在A8板子上
  4. php 发送多个,向多个地址发送邮件的php类
  5. 第 12 章 多路查找树
  6. elk-可视化图标(nginx)
  7. Stopping filebeat
  8. java 复印件效果_简历复印—原型模式
  9. hibernate sql 执行两次_使用 Hibernate 和 MySQL 需要知道的五件事
  10. gin 如何返回html_Gin(三):与模板配合使用 tmpl,go web 开发最火框架之一