>>조잉 님께서 쓰시길<<
:: substr(useremail,instr(useremail,'@',4,1)+1,20)inster
:: 위의 문장은 select문에서 일부 발취한 것으로
:: 이메일 호스트만을 가져오는 겁니다. 이것은 오라클용이거든요.
:: 예)aaa@netian.co.kr인경우에는 netian.co.kr만 가져오죠..
::
:: informix에서는 어떠한 방법으로 가져올수 있는지요.
::
:: 고수님의 답변 부탁드립니다.
=======================================================================
CREATE PROCEDURE instr(
str VARCHAR(255),
mask VARCHAR(255),
strt SMALLINT DEFAULT 1,
occur smallint default 1
)
RETURNING INT;
DEFINE slen SMALLINT;
DEFINE mlen SMALLINT;
DEFINE tempstr VARCHAR(255);
DEFINE tempmask VARCHAR(255);
DEFINE nomatch SMALLINT;
DEFINE count SMALLINT;
DEFINE pos SMALLINT;
DEFINE retpos SMALLINT;
DEFINE i SMALLINT;
DEFINE j SMALLINT;
DEFINE srchstrt SMALLINT;
LET slen = length(str);
LET mlen = length(mask);
LET count = 0;
LET nomatch = 0;
LET pos = 1;
LET retpos = 1;
LET tempstr = '';
LET tempmask = '';
LET srchstrt = strt;
IF(strt < 0) THEN -- reserve the str
FOR i=1 TO slen
LET tempstr = str[1,1] || tempstr;
LET str = str[2,255];
END FOR;
--reserve the mask
FOR i=1 TO mlen
LET tempmask = mask[1,1] || tempmask;
LET mask = mask[2,255];
END FOR;
LET srchstrt = strt * -1;
LET str = tempstr;
LET mask = tempmask;
END IF;
FOR j=1 TO slen
LET tempstr = str;
LET tempmask = mask;
FOR i=1 to mlen
IF (tempmask[1,1] != tempstr[1,1]) THEN
LET nomatch=1;
EXIT FOR;
END IF;
LET tempmask = tempmask[2,255];
LET tempstr = tempstr[2,255];
END FOR;
IF(nomatch = 0) THEN
IF(pos >= srchstrt) THEN
LET count = count + 1;
END IF;
IF (count = occur) THEN
IF(strt < 0) THEN
RETURN slen - pos +1;
ELSE
RETURN pos;
END IF;
END IF;
END IF;
LET str = str[2,255];
LET nomatch = 0;
LET pos = pos + 1;
END FOR;
RETURN 0;
END PROCEDURE;
=================================================================
위의 소스를 실행시켜고요... 한번 커리해 보세요.. ^^
그럼...
|