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

MySQL에서 정확한 문자열이 포함된 열을 검색하는 방법

MySQL LIKE 연산자로 정확한 문자열 검색하기

MySQL에서 특정 문자열과 정확히 일치하는 데이터를 검색하려면 LIKE 연산자와 와일드카드 '%'를 함께 사용하면 됩니다. 여기서 중요한 점은 대소문자까지 구분하여 검색하려면 BINARY 키워드를 추가해야 한다는 것입니다.

기본 문법은 다음과 같습니다.

SELECT * FROM 테이블명 WHERE BINARY 컬럼명 LIKE '%검색할문자열%';

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable(
    Name varchar(20)
);
Query OK, 0 rows affected (1.93 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 몇 개의 레코드를 입력합니다. 의도적으로 대소문자가 다른 값('John'과 'JOHN', 'Adam'과 'ADAM')을 함께 넣어 차이를 확인해 보겠습니다.

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (1.11 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (1.19 sec)
mysql> insert into DemoTable values('JOHN');
Query OK, 1 row affected (0.60 sec)
mysql> insert into DemoTable values('ADAM');
Query OK, 1 row affected (0.43 sec)

3. 전체 레코드 조회하기

SELECT 문으로 테이블의 모든 데이터를 확인합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-------+
| Name  |
+-------+
| Chris |
| John  |
| Adam  |
| JOHN  |
| ADAM  |
+-------+
5 rows in set (0.00 sec)

4. BINARY와 LIKE로 정확한 문자열 검색하기

이제 'JOHN'이라는 문자열을 대소문자를 구분하여 정확하게 검색하는 쿼리입니다.

mysql> select *from DemoTable where binary Name LIKE '%JOHN%';

결과를 보면 'John'이 아닌 'JOHN'만 정확히 반환된 것을 확인할 수 있습니다.

+------+
| Name |
+------+
| JOHN |
+------+
1 row in set (0.09 sec)

정리

MySQL에서 정확한 문자열을 검색할 때는 LIKE 연산자와 '%' 와일드카드를 조합하고, 대소문자 구분이 필요한 경우 BINARY 키워드를 함께 사용하면 됩니다. BINARY를 사용하지 않으면 MySQL의 기본 콜레이션 설정에 따라 대소문자가 구분되지 않아 'John'과 'JOHN'이 모두 검색될 수 있으므로 주의해야 합니다.