oracle substr,substrb ,instr,instrb函数的用法以及like的优化

转载 2016年08月30日 22:30:19

oracle substr,substrb ,instr,instrb函数的用法以及like的优化

 

--------------------substr,substrb----------------

 

说明:substr,substrb均为字符串截取函数,都带有三个参数,第一个参数为所要截取的字符串,第二个参数为strart(索引均从1开始),第三个参数为length。

SQL> select substr('今天是个好日子',3,5) from dual;
----------
是个好日子

SQL> select substrb('今天是个好日子',3,5) from dual;
-----
天是

结论是substr是按照字来算的,而substrb()是按照字节来算的。看下面的例子:

SQL> select substr('abcdef',3,4) from dual;
----
cdef

SQL> select substrb('abcdef',3,4) from dual;
----
cdef

分析:对于字母来说,substr与substrb作用时一样的,但对于汉字来说,substr是按字来取值,而substrb是按字节来取值,当所取长度为奇数时,则自动舍弃最后一位字节。
类似的还有,

length与lengthb 长度计算函数 

select length('你好') from dual         ----output:2

select lengthb('你好') from dual       ----output :4

 

------------------------instr,instrb-----------------

 

Instr与Instrb 字符串查找函数 instr(原字符串,查的字符串,起始位置,第几个匹配) 返回字符串位置,找不到返回0 .

select instr('日日花前长病酒','花前',1,1) from dual     ----output:3

select instrb('日日花前长病酒','花前',1,1) from dual     ----output:5(在windows下pl/sql 9.5--oracle 9i测的结果为7)

----------------------nvl函数--------------------------

 

 如果你某个字段为空,但是你想让这个字段显示0
nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以换成其他东西,如:1,2,3……

 

----------------like 的优化方案-------------------------

 

 col like '%xxxx%'用instr(col,'XXXX')=0 替代

oracle substr,substrb ,instr,instrb函数的用法以及like的优化

oracle substr,substrb ,instr,instrb函数的用法以及like的优化   --------------------substr,substrb--------...
  • blacklin520
  • blacklin520
  • 2015年06月25日 19:08
  • 3219

Oracle中substr函数和instr函数的结合使用

1、instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置。 函数定义如下: /*  * 返回子字符串在源字符串中的位置(字符串位置从1开始,而不是从0开始...
  • lanmuhhh2015
  • lanmuhhh2015
  • 2017年12月21日 11:22
  • 104

oracle中substr()的用法和Oracle中INSTR方法

In oracle/PLSQL, the substr functions allows you to extract a substring from a string.The syntax for...
  • hzalan
  • hzalan
  • 2007年07月19日 12:31
  • 3546

Oracle substr()与substrb()

一直以来都是用substr()来截取字符串的一部分,虽然知道有substrb(),也知道substrb()是以byte(字节)来计算长度,可没用过,也不太明白什么地方需要用到它们,今天刚好测试了一下这...
  • u010202304
  • u010202304
  • 2015年04月06日 20:58
  • 4425

oracle instr函数用法和(oracle 用instr 来代替 like)

最近项目中出现oracle instr函数,于是在网上找了一下关于它的资料。 Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 ...
  • yang_best
  • yang_best
  • 2015年01月13日 15:29
  • 3546

oracle函数之instr()和substr()实现列拆分

1、INSTR()函数         在Oracle中可以使用instr()函数对某个字符串进行判断,判断其是否含有指定的字符。 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。  ...
  • zmx729618
  • zmx729618
  • 2016年06月22日 17:01
  • 1385

oracle中INSTR函数的用法

今天有个同学问我这个INSTR函数,我也不太清楚就上网查了查做一个小小的记录吧 INSTR(C1,C2,I,J)  在一个字符串中搜索指定的字符,返回发现指定的字符的位置;  C1 ...
  • Q1059081877Q
  • Q1059081877Q
  • 2015年07月27日 22:05
  • 20233

sql 语句用substr 不用 like 可以提升查询效率

据说在sql查询时用substr代替like 可以提升查询效率 像下面的例子: 用这个substr关键字 SELECT * FROM iplog a WHERE substr(a.ip,...
  • zhq426
  • zhq426
  • 2012年07月13日 15:06
  • 3060

提高sql查询性能-使用instr函数替换like

在查询时经常使用like作为关键字进行模糊查询,在生产环境中由于数据量较大,使用like查询时比较慢,尝试了一些方法,最终发现使用oracle的instr函数可以显著提高查询的效率. 关于数据量: ...
  • lk_blog
  • lk_blog
  • 2015年07月28日 21:51
  • 5344

db2与oracle基础sql,部分函数的区别

1、取前N条记录 Oracle:Select * from TableName where rownum DB2:Select * from TableName fetch first ...
  • u011278496
  • u011278496
  • 2014年02月21日 09:00
  • 1804
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle substr,substrb ,instr,instrb函数的用法以及like的优化
举报原因:
原因补充:

(最多只允许输入30个字)