度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle中INSTR函数的用法 [打印本页]

作者: 张兴康    时间: 2020-6-14 14:44
标题: oracle中INSTR函数的用法
INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr(Oracle traning,ra,1,2) instring from dual;
INSTRING
---------
9
他的位置搜索是从1开始的也就是说o的位置是1,这点要分清楚。

INSTR方法的格式为
INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号)
返回找到的位置,如果找不到则返回0.
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 在字符串中查找'OR',从第三个字符位置开始查找"OR",取第三个字后第2个匹配项的位置。

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

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "aaa" FROM DUAL的显示结果是

Instring
——————
14


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'
  
select substr('Thisisatest', -4, 2) value from dual

这个最巧妙的我感觉还是用在有几个固定值的order by中
egrder by instr("1,0,-1,2,8,9",mark,1,1)是不是感觉很方便。

作者: 张兴康    时间: 2020-6-14 14:45

作者: caixuqad    时间: 2020-6-14 17:21

作者: 张兴康    时间: 2020-6-15 14:13
caixuqad 发表于 2017-8-14 17:21

除了傻笑,好歹发表点读后感赛
作者: fteair    时间: 2020-6-15 14:26

作者: 张兴康    时间: 2020-6-16 14:07
fteair 发表于 2017-8-15 14:26


作者: fteair    时间: 2020-6-16 14:43
张兴康 发表于 2017-8-16 14:07

                                    
作者: 张兴康    时间: 2020-6-17 14:11
fteair 发表于 2017-8-16 14:43


作者: fteair    时间: 2020-6-17 14:36
张兴康 发表于 2017-8-17 14:11






欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2