PHP MySQL 초성으로 검색하기
PHP MySQL 초성으로 검색하기
nick 컬럼에서 첫자리 문자를 초성으로 비교해서 찾아내는 쿼리이다.
사람 이름이라면 상관없는 이야기지만 일반 문자라면
쌍자음이 있는 ㄱ ㄷ ㅂ ㅅ 는 끝자리에 쌍자음을 넣어주어야 제대로 된 결과를 얻을 수 있다.
$searchsql = "select * from tablename where ";
if($f_word == 'ㄱ')
$searchsql .= " substr(nick,1,1) between '가' and '낗'";
else if($f_word == 'ㄴ')
$searchsql .= " substr(nick,1,1) between '나' and '닣'";
else if($f_word == 'ㄷ')
$searchsql .= " substr(nick,1,1) between '다' and '띻'";
else if($f_word == 'ㄹ')
$searchsql .= " substr(nick,1,1) between '라' and '맇'";
else if($f_word == 'ㅁ')
$searchsql .= " substr(nick,1,1) between '마' and '밓'";
else if($f_word == 'ㅂ')
$searchsql .= " substr(nick,1,1) between '바' and '삫'";
else if($f_word == 'ㅅ')
$searchsql .= " substr(nick,1,1) between '사' and '앃'";
else if($f_word == 'ㅇ')
$searchsql .= " substr(nick,1,1) between '아' and '잏'";
else if($f_word == 'ㅈ')
$searchsql .= " substr(nick,1,1) between '자' and '찧'";
else if($f_word == 'ㅊ')
$searchsql .= " substr(nick,1,1) between '차' and '칳'";
else if($f_word == 'ㅋ')
$searchsql .= " substr(nick,1,1) between '카' and '킿'";
else if($f_word == 'ㅌ')
$searchsql .= " substr(nick,1,1) between '타' and '팋'";
else if($f_word == 'ㅍ')
$searchsql .= " substr(nick,1,1) between '파' and '핗'";
else if($f_word == 'ㅎ')
$searchsql .= " substr(nick,1,1) between '하' and '힣'";
else {}
여러개의 초성문자를 검색하려면 반복문으로 쿼리문을 만들면 된다.
php 에서 utf-8 문자는 "ㄱ"은 3자리로 나오고 mysql 에서는 1자리임을 유의하면 된다.
첫자리는 substr(nick,1,1)
두번째는 substr(nick,2,1)
세번째는 substr(nick,3,1)
을 비교하면 된다.