substr和instr的用法

oracle的substr函数的语法:

取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ] )

substr('This is a test', 6, 2)     would return 'is'

substr('This is a test', 6)     would return 'is a test'

substr('TechOnTheNet', -3, 3)     would return 'Net'

substr('TechOnTheNet', -6, 3)     would return 'The'

只取后5个字符串:

SQL> select substr('F_USER_ACTIONCODE',-5) from dual;

SUBSTR('F_USER_ACTIONCODE',-5)

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

NCODE

去除前5个字符串,只取后面的字符串:

SQL> select substr('F_USER_ACTIONCODE',5) from dual;

SUBSTR('F_USER_ACTIONCODE',5)

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

ER_ACTIONCODE

instr方法的格式

INSTR(源字符串,目标字符串,起始位置,匹配序号)

例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR',目标字符串为'OR',起始位置为3,取第2个匹配项的位置。

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

例1:

SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL

显示结果是

Instring

——————

14

关于这个结果是这样阅读的:从右开始找到第一个匹配‘OR’的字符串(即,最后一个OR),打印出的‘14’是从左开始数得到的位置。

例2:

SQL> SELECT INSTR('CORPORATE FLOOR', 'OO', -2) "Instring" FROM DUAL;

  Instring

----------

        13

SQL> SELECT INSTR('CORPORATE FLOOR', 'OO', -1) "Instring" FROM DUAL;

  Instring

----------

        13

以上2句sql的阅读方法:从右起第二的位置开始找第一次出现‘OO’的位置

                      从右起第一的位置开始找第一次出现‘OO’的位置

这样出来的结果就是一样的,因为从右起第一或第二开始找,找到的第一个‘OO’从左数起都是在第13个位置。

但是如果:

SQL> SELECT INSTR('CORPORATE FLOOR', 'OO', -4) "Instring" FROM DUAL;

  Instring

----------

         0

这样的话右起第四个字符已经跳过了‘OO’这样的话,就找不到了。

本文转自 ywanhzy的博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值