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

MySQL 테이블에서 대문자로만 구성된 문자열을 찾는 방법

MySQL 테이블에서 모든 문자가 대문자로 되어 있는 문자열만 조회하려면 BINARY 키워드와 UPPER() 함수를 함께 사용해야 합니다. 기본적인 문법은 다음과 같습니다.

SELECT * FROM yourTableName WHERE yourColumnName = BINARY UPPER(yourColumnName);

여기서 BINARY를 사용하는 이유는 중요합니다. MySQL은 기본적으로 문자열 비교 시 대소문자를 구분하지 않기 때문에, 단순히 UPPER() 함수와 비교만 하면 소문자가 포함된 값도 함께 반환될 수 있습니다. BINARY 키워드를 추가하면 바이너리(대소문자 구분) 방식으로 정확하게 비교할 수 있습니다.

예제 테이블 생성하기

문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리로 테이블을 생성합니다.

mysql> create table FindUpperCaseDemo
    -> (
    -> Id int,
    -> FirstName varchar(20),
    -> Age int
    -> );
Query OK, 0 rows affected (1.04 sec)

샘플 데이터 삽입하기

INSERT 명령을 사용해 테스트용 레코드를 입력합니다. 의도적으로 대문자만 있는 값과 대소문자가 섞인 값을 함께 넣었습니다.

mysql> insert into FindUpperCaseDemo values(1,'John',23);
Query OK, 1 row affected (0.17 sec)
mysql> insert into FindUpperCaseDemo values(2,'CAROL',21);
Query OK, 1 row affected (0.29 sec)
mysql> insert into FindUpperCaseDemo values(3,'JoHN',23);
Query OK, 1 row affected (0.11 sec)
mysql> insert into FindUpperCaseDemo values(4,'JOHN',26);
Query OK, 1 row affected (0.22 sec)
mysql> insert into FindUpperCaseDemo values(5,'sAM',26);
Query OK, 1 row affected (0.18 sec)
mysql> insert into FindUpperCaseDemo values(6,'SAM',28);
Query OK, 1 row affected (0.18 sec)
mysql> insert into FindUpperCaseDemo values(7,'MIKE',29);
Query OK, 1 row affected (0.17 sec)
mysql> insert into FindUpperCaseDemo values(8,'BOB',20);
Query OK, 1 row affected (0.45 sec)
mysql> insert into FindUpperCaseDemo values(9,'LARRY',22);
Query OK, 1 row affected (0.39 sec)
mysql> insert into FindUpperCaseDemo values(10,'LARRy',22);
Query OK, 1 row affected (0.14 sec)

전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from FindUpperCaseDemo;

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

+------+-----------+------+
| Id   | FirstName | Age  |
+------+-----------+------+
|    1 | John      |   23 |
|    2 | CAROL     |   21 |
|    3 | JoHN      |   23 |
|    4 | JOHN      |   26 |
|    5 | sAM       |   26 |
|    6 | SAM       |   28 |
|    7 | MIKE      |   29 |
|    8 | BOB       |   20 |
|    9 | LARRY     |   22 |
|   10 | LARRy     |   22 |
+------+-----------+------+
10 rows in set (0.00 sec)

대문자 문자열만 조회하는 쿼리 실행

이제 MySQL 테이블에서 대문자로만 이루어진 문자열을 찾는 핵심 쿼리를 실행해 보겠습니다.

mysql> select *from FindUpperCaseDemo where FirstName=BINARY UPPER(FirstName);

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

+------+-----------+------+
| Id   | FirstName | Age  |
+------+-----------+------+
|    2 | CAROL     |   21 |
|    4 | JOHN      |   26 |
|    6 | SAM       |   28 |
|    7 | MIKE      |   29 |
|    8 | BOB       |   20 |
|    9 | LARRY     |   22 |
+------+-----------+------+
6 rows in set (0.09 sec)

결과를 보면 'John', 'JoHN', 'sAM', 'LARRy'처럼 대소문자가 섞인 값은 제외되고, 'CAROL', 'JOHN', 'SAM', 'MIKE', 'BOB', 'LARRY'처럼 모든 글자가 대문자인 값만 정확히 필터링되어 반환된 것을 확인할 수 있습니다.