MySQL에서 저장된 데이터에 줄바꿈(개행 문자, \n)이 포함되어 있는지 확인하고 싶다면 REGEXP 연산자를 활용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 줄바꿈이 포함된 행만 검색하는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 테스트에 사용할 간단한 테이블을 생성합니다.
mysql> create table DemoTable ( Name varchar(100) ); Query OK, 0 rows affected (1.61 sec)
2. 샘플 데이터 삽입하기
INSERT 문으로 몇 개의 레코드를 추가합니다. 이때 'John\nSmith', 'David\nMiller'처럼 이름 사이에 줄바꿈 문자(\n)가 포함된 데이터도 함께 넣어 주는 것이 핵심입니다.
mysql> insert into DemoTable values('John\nSmith');
Query OK, 1 row affected (0.73 sec)
mysql> insert into DemoTable values('John Doe');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('David\nMiller');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values('Carol Taylor');
Query OK, 1 row affected (0.27 sec)3. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 데이터를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다. 화면상으로는 줄바꿈이 공백처럼 보이기 때문에 눈으로 구분하기 어렵습니다.
+--------------+ | Name | +--------------+ | John Smith | | John Doe | | David Miller | | Carol Taylor | +--------------+ 4 rows in set (0.00 sec)
4. 줄바꿈이 포함된 행 검색하기
줄바꿈이 포함된 텍스트를 찾는 핵심 쿼리는 다음과 같습니다. WHERE 절에서 REGEXP "\n" 조건을 사용하면 Name 컬럼에 개행 문자가 들어 있는 행만 정확히 필터링할 수 있습니다.
mysql> select *from DemoTable where Name regexp "\n";
실행 결과를 확인해 보겠습니다.
+--------------+ | Name | +--------------+ | John Smith | | David Miller | +--------------+ 2 rows in set (0.41 sec)
결과를 보면 처음에 삽입했던 John\nSmith와 David\nMiller 두 행만 반환된 것을 알 수 있습니다. 즉, 줄바꿈 문자가 포함되지 않은 'John Doe'와 'Carol Taylor'는 검색에서 제외되었습니다.
정리
MySQL에서 줄바꿈이 포함된 텍스트를 검색하려면 REGEXP "\n" 패턴을 사용하면 됩니다. LIKE 연산자로는 개행 문자를 직관적으로 매칭하기 어려울 수 있으므로, 정규식 기반의 REGEXP를 활용하는 것이 가장 간단하고 확실한 방법입니다. 이 기법은 잘못 저장된 개행 문자가 있는 데이터를 찾아 정제(cleansing)할 때 특히 유용합니다.