Oracle中INSTR和SUBSTR的用法

原创 2008年09月26日 14:45:00

Oracle中INSTR的用法:
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


综合应用:
SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL
--INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring" FROM DUAL

SELECT INSTR('32.8,63.5',',', 1, 1) "Instring" FROM DUAL

SELECT SUBSTR('32.8,63.5',INSTR('32.8,63.5',',', 1, 1)+1) "INSTRING" FROM DUAL
SELECT SUBSTR('32.8,63.5',1,INSTR('32.8,63.5',',', 1, 1)-1) "INSTRING" FROM DUAL

-- CREATED ON 2008-9-26 BY ADMINISTRATOR
DECLARE
  -- LOCAL VARIABLES HERE
  T   VARCHAR2(2000);
  S   VARCHAR2(2000);
  NUM INTEGER;
  I   INTEGER;
  POS INTEGER;
BEGIN
  -- TEST STATEMENTS HERE
  T := '12.3,23.0;45.6,54.2;32.8,63.5;';
  SELECT LENGTH(T) - LENGTH(REPLACE(T, ';', '')) INTO NUM FROM DUAL;
  DBMS_OUTPUT.PUT_LINE('NUM:' || NUM);
  POS := 0;
  FOR I IN 1 .. NUM LOOP
    DBMS_OUTPUT.PUT_LINE('I:' || I);
    DBMS_OUTPUT.PUT_LINE('POS:' || POS);
    DBMS_OUTPUT.PUT_LINE('==:' || INSTR(T, ';', 1, I));
    DBMS_OUTPUT.PUT_LINE('INSTR:' || SUBSTR(T, POS + 1, INSTR(T, ';', 1, I) - 1));
    POS := INSTR(T, ';', 1, I);
  END LOOP;
END;


-- Created on 2008-9-26 by ADMINISTRATOR
declare
  -- Local variables here
  i integer;
  T      VARCHAR2(2000);
  S      VARCHAR2(2000);
begin
  -- Test statements here
    --历史状态
  T := '12.3,23.0;45.6,54.2;32.8,63.5;';
  IF (T IS NOT NULL) AND (LENGTH(T) > 0) THEN
    --T := T || ',';
    WHILE LENGTH(T) > 0 LOOP
      --ISTATUSID := 0;
      S         := TRIM(SUBSTR(T, 1, INSTR(T, ';') - 1));
      IF LENGTH(S) > 0 THEN
         DBMS_OUTPUT.PUT_LINE('LAT:'||SUBSTR('32.8,63.5',1,INSTR('32.8,63.5',',', 1, 1)-1));
         DBMS_OUTPUT.PUT_LINE('LON:'||SUBSTR('32.8,63.5',INSTR('32.8,63.5',',', 1, 1)+1));
/*        INSERT INTO T_HISTORY_RESPONSESTATUS
          (HISTORYID, RESPONSESTATUSID, STAMP, CALL_LETTER)
        VALUES
          (IHISTORYID, S, ISTAMP, ICALL_LETTER);
*/        -- COMMIT;
      END IF;
      T := SUBSTR(T, INSTR(T, ';') + 1);
    END LOOP;
  END IF; 
end;


 

Oracle中通过substr和instr实现截取指定字符之间的字符串:

摘要:在开发项目的过程中遇到了这样
  • sxdtzhaoxinguo
  • sxdtzhaoxinguo
  • 2014-10-14 16:44:16
  • 75720

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

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

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:00
  • 3854

PL/SQL INSTR、SUBSTR和split函数实现

substr(str,index1,n) 取字符串str,位置index1后面的n个字符,index1取1或0都代表第一个字符。 instr(str,sub,dire,times) 获取字符串st...
  • yhb315279058
  • yhb315279058
  • 2014-12-17 09:12:02
  • 734

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

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

instr和substr函数

可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。其语法为:instr(sourceString,destString,start,appearPosition).   instr...
  • cong20089
  • cong20089
  • 2013-11-12 10:57:27
  • 510

OCP-1Z0-051 第83题 INSTR,SUBSTR,LPAD函数综合使用

一、原题 Examine the data in the CUST_NAME column of the CUSTOMERS table. CUST_NAME Lex De Haan Rens...
  • hollo_hhy
  • hollo_hhy
  • 2014-05-08 18:29:30
  • 3909

oracle中INSTR函数的用法

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

SQL中instr和like的使用区别

1、instr函数  instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0。 instr函数定义如下: /* ...
  • lanmuhhh2015
  • lanmuhhh2015
  • 2018-01-31 14:25:50
  • 138

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

oracle instr函数 对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如: SQL> select instr('oracle','or') position...
  • hzhsan
  • hzhsan
  • 2013-06-27 13:11:15
  • 26906
收藏助手
不良信息举报
您举报文章:Oracle中INSTR和SUBSTR的用法
举报原因:
原因补充:

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