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
  • 70965

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
  • 576

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
  • 3458

Oracle中INSTR和SUBSTR的用法

Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) ...
  • wozengcong
  • wozengcong
  • 2013年12月08日 00:40
  • 894

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

原文链接 摘要:在开发项目的过程中遇到了这样的一个问题,就是从远程服务器取到的数据中是由一段规则的字符串组成的,但是你想要的还不是这段字符串,是其中的一段字符串,那就的使用Oracle强大的...
  • a214919447
  • a214919447
  • 2017年01月18日 14:55
  • 4031

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

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

SQL 函数 instr的用法

转自: http://blog.sina.com.cn/s/blog_6094cbf30100frz0.html  SQL 函数 instr的用法 INSTR(C1,C2,I,J) 在一个...
  • honghuajun
  • honghuajun
  • 2012年06月12日 11:37
  • 7737

Oracle中Instr用法

之前只是会用Orcale来做些项目,没有研究里面具体函数之类的,现在边学边看边记录。 主要这个Instr看着默生其它的一看都能够明白的; 它的做用是取得指定字符是否存在,及取出Index位...
  • hongleidy5000
  • hongleidy5000
  • 2012年08月21日 15:55
  • 7676

oracle中INSTR函数的用法

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

Oracle中INSTR的用法

转自:http://blog.csdn.net/e_wsq/article/details/2983102 Oracle中INSTR的用法:  INSTR方法的格式为 INSTR(源字符串, 要查找...
  • bruceoyqq
  • bruceoyqq
  • 2014年01月22日 16:07
  • 731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle中INSTR和SUBSTR的用法
举报原因:
原因补充:

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