varchar 타입의 열에 저장된 값이 숫자와 특수문자가 섞여 있을 때, 숫자만 가지고도 해당 값을 검색할 수 있습니다. 이때 MySQL의 INSERT() 함수를 활용하면 되는데, 이 함수는 다음과 같은 매개변수를 가집니다.
| 매개변수 | 설명 |
|---|---|
| str | 수정 대상이 되는 문자열 |
| position | str2를 삽입할 위치 |
| number | 대체할 문자 수 |
| str2 | str에 삽입할 문자열 |
예제 테이블 생성
먼저 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> Code varchar(100)
-> );
Query OK, 0 rows affected (0.82 sec)
insert 명령을 사용해 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable values('958575/98') ;
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('765432/99');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('983456/91');
Query OK, 1 row affected (0.15 sec)select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+
| Code |
+-----------+
| 958575/98 |
| 765432/99 |
| 983456/91 |
+-----------+
3 rows in set (0.00 sec)
숫자로 varchar 열 검색하기
다음은 숫자만 사용하여 varchar 열을 검색하는 쿼리입니다.
mysql> select *from DemoTable where Code =INSERT(76543299,7,0,'/');
여기서 INSERT(76543299, 7, 0, '/')는 숫자 76543299의 7번째 위치에 슬래시(/)를 삽입하고, 기존 문자는 0개만큼만 대체하라는 의미입니다. 그 결과 '765432/99'라는 문자열이 만들어져 WHERE 조건과 일치하게 됩니다.
출력 결과
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+
| Code |
+-----------+
| 765432/99 |
+-----------+
1 row in set (0.00 sec)
이처럼 INSERT() 함수를 활용하면 원본 데이터에 포함된 구분 기호나 특수문자를 동적으로 생성하여, 숫자 정보만으로도 varchar 열의 값을 정확하게 검색할 수 있습니다.