개요
SOUNDEX() 함수는 문자열의 사운덱(soundex) 값을 반환하는 함수입니다. 사운덱은 영어 발음을 기준으로 이름을 색인화하기 위한 음성 알고리즘으로, 발음이 비슷한 단어들을 동일한 코드로 매핑할 수 있게 해줍니다.
이 글에서는 'student_info' 테이블의 데이터를 조회하면서 SOUNDEX() 함수를 LIKE 연산자와 함께 사용하여 특정 레코드를 검색하는 방법을 살펴보겠습니다.
예제: SOUNDEX()와 LIKE 연산자 조합
먼저 Student_info 테이블에 저장된 전체 데이터를 확인해 보겠습니다.
mysql> Select * from Student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | +------+---------+------------+------------+ 3 rows in set (0.00 sec)
이제 SOUNDEX() 함수에 컬럼명(Name)을 인수로 전달하고, LIKE 연산자와 함께 사용하여 특정 레코드를 검색해 보겠습니다.
mysql> Select * from student_info where SOUNDEX(Name) LIKE '%G%'; +------+--------+------------+------------+ | id | Name | Address | Subject | +------+--------+------------+------------+ | 105 | Gaurav | Chandigarh | Literature | +------+--------+------------+------------+ 1 row in set (0.00 sec)
위 쿼리에서는 SOUNDEX() 함수의 인수로 Name 컬럼을 지정했으며, 그 결과 사운덱 값이 '%G%' 패턴과 일치하는 행만 반환되었습니다.
주요 특징: 첫 글자는 항상 유지됨
SOUNDEX() 함수의 결과값에는 항상 인수로 전달된 문자열의 첫 번째 글자가 포함된다는 점을 기억해야 합니다. 예를 들어 'Ram'이라는 문자열을 SOUNDEX() 함수에 전달하면, 결과값의 첫 문자가 'R'로 시작하는 것을 확인할 수 있습니다.
mysql> Select SOUNDEX('Ram');
+----------------+
| SOUNDEX('Ram') |
+----------------+
| R500 |
+----------------+
1 row in set (0.00 sec)또한 대소문자 구분 없이 동일한 결과가 반환됩니다. 소문자 'ram'을 전달해도 첫 문자는 대문자 'R'로 정규화되어 출력됩니다.
mysql> Select SOUNDEX('ram');
+----------------+
| SOUNDEX('ram') |
+----------------+
| R500 |
+----------------+
1 row in set (0.00 sec)정리
이처럼 SOUNDEX() 함수를 LIKE 연산자와 결합하면, 이름의 발음 기반 코드를 활용해 원하는 레코드를 유연하게 검색할 수 있습니다. 특히 영어권 이름 데이터에서 발음이 유사한 이름을 찾거나, 첫 글자를 기준으로 필터링할 때 유용하게 활용할 수 있습니다.