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

MySQL에서 공백만 있는 열 값을 가진 행 조회하기 – TRIM() 함수 활용법

특정 열의 값이 공백(whitespace)으로만 이루어진 행을 조회하려면 TRIM() 함수를 활용하면 됩니다. 먼저 예제 테이블을 생성해 보겠습니다.

mysql> create table DemoTable826(
    FirstName varchar(100),
    Age int
);
Query OK, 0 rows affected (0.60 sec)

이제 insert 명령을 사용해 테이블에 데이터를 삽입합니다. 이때 일부 레코드의 FirstName 값은 의도적으로 공백으로 설정했습니다.

mysql> insert into DemoTable826 values(' ',24);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable826 values(' ',22);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable826 values('Chris',26);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable826 values('Robert',27);
Query OK, 1 row affected (0.07 sec)

select 문을 사용하여 테이블의 전체 레코드를 확인해 보겠습니다.

mysql> select *from DemoTable826;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-----------+------+
| FirstName | Age  |
+-----------+------+
| Adam      | 21   |
|           | 24   |
|           | 22   |
| Chris     | 26   |
| Robert    | 27   |
+-----------+------+
5 rows in set (0.00 sec)

다음은 FirstName 열의 값이 공백인 행만 조회하는 쿼리입니다. TRIM() 함수와 함께 COALESCE() 함수를 사용하면 NULL 값까지도 안전하게 처리할 수 있습니다.

mysql> select *from DemoTable826 where COALESCE(TRIM(FirstName), '') = '';

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

+-----------+------+
| FirstName | Age  |
+-----------+------+
|           | 24   |
|           | 22   |
+-----------+------+
2 rows in set (0.00 sec)

쿼리 동작 원리

TRIM(FirstName)은 문자열 앞뒤의 모든 공백을 제거합니다. 따라서 공백만 있던 값은 빈 문자열('')이 됩니다. 여기에 COALESCE() 함수를 함께 사용하면 값이 NULL일 경우에도 빈 문자열로 대체되어 비교가 정상적으로 수행됩니다. 최종적으로 조건식 = ''을 만족하는 행, 즉 이름이 공백이거나 NULL인 행만 결과로 반환됩니다.