MySQL에서 INT 타입의 컬럼에 대해 LIKE 연산자로 부분 일치 검색을 하려면 CAST() 함수를 사용해야 합니다. LIKE는 기본적으로 문자열 비교를 위한 연산자이기 때문에, 정수 값을 문자열로 변환한 뒤 비교를 수행하는 것이죠.
기본 문법
INT 필드에 LIKE 비교를 적용하는 기본 문법은 다음과 같습니다.
SELECT yourColumnName1, yourColumnName2, ......N FROM yourTableName WHERE CAST(yourColumnName AS CHAR) LIKE '%yourIntegerValue%';
예제 테이블 생성
위 문법을 실제로 이해하기 위해 예제 테이블을 만들어 보겠습니다. 다음은 INT 필드에 LIKE 비교를 수행하기 위한 테이블 생성 쿼리입니다.
mysql> create table ComparisonOnIntField
-> (
-> StudentId int NOT NULL,
-> StudentName varchar(20),
-> StudentAge int
-> );
Query OK, 0 rows affected (1.00 sec)데이터 삽입
테이블에 몇 개의 레코드를 삽입합니다. 레코드 삽입 쿼리는 다음과 같습니다.
mysql> insert into ComparisonOnIntField values(10,'Carol',24); Query OK, 1 row affected (0.17 sec) mysql> insert into ComparisonOnIntField values(12,'Bob',21); Query OK, 1 row affected (0.18 sec) mysql> insert into ComparisonOnIntField values(14,'Sam',23); Query OK, 1 row affected (0.10 sec) mysql> insert into ComparisonOnIntField values(16,'Mike',25); Query OK, 1 row affected (0.26 sec) mysql> insert into ComparisonOnIntField values(18,'John',27); Query OK, 1 row affected (0.14 sec) mysql> insert into ComparisonOnIntField values(20,'David',26); Query OK, 1 row affected (0.15 sec)
전체 데이터 조회
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from ComparisonOnIntField;
실행 결과는 다음과 같습니다.
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 10 | Carol | 24 | | 12 | Bob | 21 | | 14 | Sam | 23 | | 16 | Mike | 25 | | 18 | John | 27 | | 20 | David | 26 | +-----------+-------------+------------+ 6 rows in set (0.00 sec)
CAST()를 활용한 LIKE 비교 실행
이제 CAST() 함수를 사용하여 INT 필드인 StudentId에 대해 LIKE 비교를 수행하는 쿼리입니다. 아래 예제에서는 학생 ID에 '18'이라는 숫자가 포함된 레코드를 찾습니다.
mysql> select StudentName,StudentAge from ComparisonOnIntField
-> where cast(StudentId as CHAR) Like '%18%';실행 결과는 다음과 같습니다.
+-------------+------------+ | StudentName | StudentAge | +-------------+------------+ | John | 27 | +-------------+------------+ 1 row in set (0.05 sec)
결과를 보면 StudentId가 18인 'John' 학생의 정보만 정확하게 조회된 것을 확인할 수 있습니다.
참고 사항
CAST() 함수를 사용한 LIKE 비교는 편리하지만, 인덱스를 활용할 수 없어 대량의 데이터가 있는 테이블에서는 성능 저하가 발생할 수 있습니다. 따라서 정확한 값 매칭이 필요하다면 일반적인 등호(=) 비교를 사용하고, 부분 일치 검색이 꼭 필요한 경우에만 CAST()와 LIKE 조합을 사용하는 것이 좋습니다.