Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL SOUNDEX() 함수와 LIKE 연산자로 테이블 레코드 검색하는 방법

개요

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 연산자와 결합하면, 이름의 발음 기반 코드를 활용해 원하는 레코드를 유연하게 검색할 수 있습니다. 특히 영어권 이름 데이터에서 발음이 유사한 이름을 찾거나, 첫 글자를 기준으로 필터링할 때 유용하게 활용할 수 있습니다.