Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 개발콘텐츠
- 반복줄이기
- 리액트
- const 단언문
- JS console
- React.js
- NonNullable
- utilty type
- reactjs
- 제네릭
- click and drag
- 티스토리꾸미기
- CSS
- returnType
- javascript
- typescript
- react
- Chart.js
- React Native
- 타입좁히기
- 타입스크립트
- 성능최적화
- TSDoc
- 레이아웃쪼개기
- 폰트적용하기
- 공통컴포넌트
- 커스텀
- vue.js
- 2022
- 누구나 자료구조와 알고리즘
Archives
- Today
- Total
몽땅뚝딱 개발자
[SQL/Function] 초성검색 / 초성에 해당하는 데이터 찾기 본문
◽ Function
CREATE DEFINER=`test`@`%` FUNCTION `fn_choSearch`(
`str` varchar(20)
) RETURNS varchar(20) CHARSET utf8
BEGIN
-- 초성검색 function
declare returnStr varchar(100);
declare cnt int;
declare i int;
declare j int;
declare tmpStr varchar(10);
if str is null then
return '';
end if;
set cnt = length(str)/3;
set i = 1;
set j = 1;
while i <=cnt DO
set tmpStr = substring(str,i,j);
set returnStr = concat(ifnull(returnStr,''),
case when tmpStr rlike '^(ㄱ|ㄲ)' OR ( tmpStr >= '가' AND tmpStr < '나' ) then 'ㄱ'
when tmpStr rlike '^ㄴ' OR ( tmpStr >= '나' AND tmpStr < '다' ) then 'ㄴ'
when tmpStr rlike '^(ㄷ|ㄸ)' OR ( tmpStr >= '다' AND tmpStr < '라' ) then 'ㄷ'
when tmpStr rlike '^ㄹ' OR ( tmpStr >= '라' AND tmpStr < '마' ) then 'ㄹ'
when tmpStr rlike '^ㅁ' OR ( tmpStr >= '마' AND tmpStr < '바' ) then 'ㅁ'
when tmpStr rlike '^ㅂ' OR ( tmpStr >= '바' AND tmpStr < '사' ) then 'ㅂ'
when tmpStr rlike '^(ㅅ|ㅆ)' OR ( tmpStr >= '사' AND tmpStr < '아' ) then 'ㅅ'
when tmpStr rlike '^ㅇ' OR ( tmpStr >= '아' AND tmpStr < '자' ) then 'ㅇ'
when tmpStr rlike '^(ㅈ|ㅉ)' OR ( tmpStr >= '자' AND tmpStr < '차' ) then 'ㅈ'
when tmpStr rlike '^ㅊ' OR ( tmpStr >= '차' AND tmpStr < '카' ) then 'ㅊ'
when tmpStr rlike '^ㅋ' OR ( tmpStr >= '카' AND tmpStr < '타' ) then 'ㅋ'
when tmpStr rlike '^ㅌ' OR ( tmpStr >= '타' AND tmpStr < '파' ) then 'ㅌ'
when tmpStr rlike '^ㅍ' OR ( tmpStr >= '파' AND tmpStr < '하' ) then 'ㅍ'
else 'ㅎ' end);
set i=i+1;
end while;
RETURN returnStr;
END
◽ 실행예시
todo 테이블에서 contents 컬럼에 'ㅂㄹ'가 포함되어있는 행을 가져온다.
SELECT * FROM todo WHERE fn_choSearch(todo.contents) like concat('%', 'ㅂㄹ', '%');
개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.
'Development > DB' 카테고리의 다른 글
[워크벤치] MySQL과 엑셀 연동하기 (MySQL for Excel) (0) | 2021.06.17 |
---|---|
[SQL] CONCAT & GROUP_CONCAT 사용하기 (0) | 2021.06.16 |
[SQL/Function] 구분자로 쪼개어진 문자열의 개수 구하기 (0) | 2021.06.12 |
[워크벤치] MySQL Workbench 기능 활용 (0) | 2021.06.11 |
Comments