database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 1407 게시물 읽기
No. 1407
Oracle의 Instr() 함수가 DB2의 어떤 함수로 매칭 되는지 알려수십시요?? => 고수님들만 알것 같은데 많은 리플 부특드립니다.
작성자
손님
작성일
2007-08-13 20:55
조회수
12,789

단순히, instr(A, 'a') 형태가 아닌 풀 파라미터가 있는 형태임

즉, instr(A, B, C, D) => 구지 설명하자면 변수 A에서 B라는 스트링을 찾는데 C번째 문자에서 B라는 스트링이 D번째 반복되는 Index 을 

                                  Return 하는 함수인데...


instr() 함수는 instr(A, B) 나 instr(A, B, C) 형태로도 쓰이는데 그에 매칭되는 DB2 함수는 있습니다.

=> POSSTR(A, B) 나 LOCATE( B, A, C) 을 사용하면 됩니다.


 하지만, instr(A, B, C. D) 형태로 쓰일때 그에 매칭되는 DB2 함수가 없습니다.


혹시, 제가 모르는 함수가 있거나 instr(A, B, C, D) 효과를 낼수 있는 방법이 있을련지요??????



아무리 자료를 찾아봐도 없어서 고수님들의 의견을 듣고 싶어서 여기에 글을 올립니다.


감사합니다.

이 글에 대한 댓글이 총 2건 있습니다.

질문하신 부분에 매칭되는 함수는 없구요, UDF 로 만들어 쓰시면 될거 같네요. 

아래 소스 참고하셔서 빌드하시면 원하시는 결과를 보실 수 있을 듯..

===============================================================

CREATE FUNCTION INSTRB (C1 VarChar(4000), C2 VarChar(4000), N integer, M integer)

 RETURNS Integer
 SPECIFIC INSTRBOracleBase
 LANGUAGE SQL
 CONTAINS SQL
 NO EXTERNAL ACTION
 DETERMINISTIC

BEGIN ATOMIC
  
 DECLARE Pos, R, C2L Integer;
 
 SET C2L = LENGTH(C2);

  IF N > 0 THEN

   SET (Pos, R) = (N, 0);

   WHILE R < M AND Pos > 0 DO

    SET Pos = LOCATE(C2,C1,Pos);

    IF Pos > 0 THEN

     SET (Pos, R) = (Pos + 1, R + 1);

    END IF;

   END WHILE;

  RETURN (Pos - 1)*(1-SIGN(M-R));

  ELSE
   
   SET (Pos, R) = (LENGTH(C1)+N, 0);

   WHILE R < M AND Pos > 0 DO

    IF SUBSTR(C1,Pos,C2L) = C2 THEN

     SET R = R + 1;

    END IF;

    SET Pos = Pos - 1;

   END WHILE;

   RETURN (Pos + 1)*(1-SIGN(M-R));

 END IF;

END

=============================================================

매콤군님이 2007-08-14 14:03에 작성한 댓글입니다. Edit

아이구 대단히 감사합니다. 매콤군님 !!

역쉬 어딜가나 고수님들이 있다니까요 ㅎㅎ

근데,

 SPECIFIC INSTRBOracleBase
 LANGUAGE SQL
 CONTAINS SQL
 NO EXTERNAL ACTION
 DETERMINISTIC

이부분이 이해가 안가는데.. 염치 없지만 주석이라도 달아 줬으면 좋았을텐데요 ㅎㅎ
뭐 이정도도 만족은 합니다만 ㅎㅎ


하여튼..감사합니다. ^^

손님님이 2007-08-14 16:23에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1410DB2 vs. ORACLE [1]
강현호
2007-08-16
8900
1409DB2에 connect by와 같은 연산자가 있나요? [2]
이준식
2007-08-15
9051
1408Oracle Function 인데요 DB2(버전 8대) UDF 로 바꿀려고 하는데 감이 안오네요?? 도와 주십시요 !! Please .......
손님
2007-08-14
8660
1407Oracle의 Instr() 함수가 DB2의 어떤 함수로 매칭 되는지 알려수십시요?? => 고수님들만 알것 같은데 많은 리플 부특드립니다. [2]
손님
2007-08-13
12789
1406vb.net 에서 rpgle procedure 호출방법
전형준
2007-08-13
8387
1405오라클의 데이터를 불러와서 db2로 넣어야하는데...급..
박현성
2007-08-13
8374
1404Load의 Build 단계에서요.. [1]
윤선민
2007-08-13
8370
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다