안녕하세요!
오랫만에 돌아온 카노 입니다.
오늘은 너무 심심해서 오라클(DB) 를 갖고 초성 찾기 함수를 만들어 볼 생각 입니다.
예) fn_korinitialkeyword('홍길동')
return : ㅎㄱㄷ
select *
from 테이블
where fn_korinitialkeyword(직원명컬럼) like '%ㅎㄱㄷ%'
이런식으로 검색이 되도록 만들 꺼에요~
함수 코드는
function fn_korinitialkeyword( str in varchar2) return varchar2
is
returnStr varchar2(100);
cnt number := 0;
tmpStr varchar2(10);
begin
if str is null then
return '';
end if;
cnt := length(str);
for i in 1 .. cnt
loop
tmpStr := substr(str,i,1);
returnStr := returnStr ||
case when tmpStr < 'ㄱ' then substr(tmpStr, 1, 1)
when ascii('ㄱ') <= ascii(tmpStr) and ascii(tmpStr) <= ascii('ㅎ') then chr(ascii(tmpStr))
when tmpStr < '나' then 'ㄱ'
when tmpStr < '다' then 'ㄴ'
when tmpStr < '라' then 'ㄷ'
when tmpStr < '마' then 'ㄹ'
when tmpStr < '바' then 'ㅁ'
when tmpStr < '사' then 'ㅂ'
when tmpStr < '아' then 'ㅅ'
when tmpStr < '자' then 'ㅇ'
when tmpStr < '차' then 'ㅈ'
when tmpStr < '카' then 'ㅊ'
when tmpStr < '타' then 'ㅋ'
when tmpStr < '파' then 'ㅌ'
when tmpStr < '하' then 'ㅍ'
else 'ㅎ'
end;
end loop;
return returnStr;
end;
이렇게 완성 합니다.
loop 를 이용하여 입력받은 varchar2 문자를 substr을 이용하여 한글자씩
모음으로 바꾸고 그 모음이 위하는 조건에 따라 'ㄱ','ㄴ' 등등으로 바꾸어
returnStr <- 이어 붙이고
그 결과를 output 합니다.
댓글
댓글 쓰기