查找字符的位置 instr()、截取字符串 substr()

目录

1.instr(resources,aim)

2.instr(resources,aim,start,num)

3.substr(resources,start,length)


1.instr(resources,aim)

解释:在resources中查找aim的位置。

如:

select instr('abcdabcd','a') from dual; -- 结果是1,表示a在字符串中abcdabcd中第一次出现的位置是2 。
select instr('abcdabcd','b') from dual; -- 结果是2,表示b在字符串中abcdabcd中第一次出现的位置是2 。
select instr('abcdabcd','abc') from dual; -- 结果是1,表示abc在字符串中abcdabcd第一次出现a的位置是1 。
select instr('abcdabcd','d') from dual; -- 结果是4,表示d在字符串中abcdabcd第一次出现的位置是4 。
select instr('abcdabcd','da') from dual; -- 结果是4,表示da在字符串中abcdabcd第一次出现d的位置是4 。

SQL> select instr('abcdabcd','a') from dual;

INSTR('ABCDABCD','A')
---------------------
                    1

SQL> select instr('abcdabcd','b') from dual;

INSTR('ABCDABCD','B')
---------------------
                    2

SQL> select instr('abcdabcd','abc') from dual;

INSTR('ABCDABCD','ABC')
-----------------------
                      1

SQL> select instr('abcdabcd','d') from dual;

INSTR('ABCDABCD','D')
---------------------
                    4

SQL> select instr('abcdabcd','da') from dual;

INSTR('ABCDABCD','DA')
----------------------
                     4

SQL> 

2.instr(resources,aim,start,num)

解释:在resources中从start位置查找第num次出现的aim位置。

select instr('abcdabcdabcd','a',1,1) from dual; --结果是1,表示a在字符串abcdabcdabcd中从第1个位置开始第1次出现的位置。
select instr('abcdabcdabcd','a',1,2) from dual; --结果是5,表示a在字符串abcdabcdabcd中从第1个位置开始第2次出现的位置。
select instr('abcdabcdabcd','a',6,1) from dual; --结果是9,表示a在字符串abcdabcdabcd中从第6个位置开始第1次出现的位置。
select instr('abcdabcdabcd','a',6,2) from dual; --结果是0,表示a在字符串abcdabcdabcd中从第6个位置开始第2次出现的位置。因为不存在,所以是0 。

SQL> select instr('abcdabcdabcd','a',1,1) from dual;

INSTR('ABCDABCDABCD','A',1,1)
-----------------------------
                            1

SQL> select instr('abcdabcdabcd','a',1,2) from dual;

INSTR('ABCDABCDABCD','A',1,2)
-----------------------------
                            5

SQL> select instr('abcdabcdabcd','a',6,1) from dual;

INSTR('ABCDABCDABCD','A',6,1)
-----------------------------
                            9

SQL> select instr('abcdabcdabcd','a',6,2) from dual;

INSTR('ABCDABCDABCD','A',6,2)
-----------------------------
                            0

3.substr(resources,start,length)

解释:截取resources,从start开始,截取length长度字符串。

如:

select substr('abcdefg',1,1) from dual; --结果是a,表示从第1个位置开始截取长度为1的字符串。
select substr('abcdefg',1,3) from dual; --结果是abc,表示从第1个位置开始截取长度为3的字符串。
select substr('abcdefg',2,1) from dual; --结果是b,表示从第2个位置开始截取长度为1的字符串。
select substr('abcdefg',2,4) from dual; --结果是bcde,表示从第2个位置开始截取长度为4的字符串。
select substr('abcdefg',5,4) from dual; --结果是efg,表示从第5个位置开始截取长度为4的字符串。
select substr('abcdefg',10,4) from dual; --结果是空,表示从第10个位置开始截取长度为4的字符串。超出范围,所以为空。
SQL> select substr('abcdefg',1,1) from dual;

SUBSTR('ABCDEFG',1,1)
---------------------
a

SQL> select substr('abcdefg',1,3) from dual;

SUBSTR('ABCDEFG',1,3)
---------------------
abc

SQL> select substr('abcdefg',2,1) from dual;

SUBSTR('ABCDEFG',2,1)
---------------------
b

SQL> select substr('abcdefg',2,4) from dual;

SUBSTR('ABCDEFG',2,4)
---------------------
bcde

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

SUBSTR('ABCDEFG',5,4)
---------------------
efg

SQL> select substr('abcdefg',10,4) from dual;

SUBSTR('ABCDEFG',10,4)
----------------------

SQL> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值