MySQL에서 문자열에 하이픈 기호가 정확히 두 개 포함된 레코드를 검색하려면 LIKE 연산자를 활용하면 됩니다. 핵심 아이디어는 '%--%' 패턴으로 하이픈 두 개가 포함된 값을 찾되, '%---%' 패턴(하이픈 세 개 이상)은 제외하는 것입니다.
1. 샘플 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Password varchar(100)
);
Query OK, 0 rows affected (1.27 sec)
2. 데이터 삽입
INSERT 명령을 사용하여 하이픈 개수가 서로 다른 여러 레코드를 추가합니다.
mysql> insert into DemoTable(Password) values('John@--123');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(Password) values('---Carol234');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Password) values('--David987');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Password) values('Mike----53443');
Query OK, 1 row affected (0.30 sec)3. 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과:
+----+---------------+
| Id | Password |
+----+---------------+
| 1 | John@--123 |
| 2 | ---Carol234 |
| 3 | --David987 |
| 4 | Mike----53443 |
+----+---------------+
4 rows in set (0.00 sec)
4. 하이픈 두 개만 포함된 레코드 검색 쿼리
다음 쿼리는 하이픈 기호가 정확히 두 개 포함된 레코드만 조회합니다.
mysql> select *from DemoTable
where Password like '%--%'
and Password not like '%---%';
실행 결과:
+----+------------+
| Id | Password |
+----+------------+
| 1 | John@--123 |
| 3 | --David987 |
+----+------------+
2 rows in set (0.06 sec)
쿼리 동작 원리
Password like '%--%': 하이픈 두 개 이상이 포함된 모든 레코드를 찾습니다.Password not like '%---%': 하이픈이 세 개 이상 포함된 레코드를 제외합니다.
두 조건을 AND로 결합하면 결과적으로 하이픈이 정확히 두 개만 포함된 'John@--123'과 '--David987' 두 레코드만 반환됩니다. 참고로 '---Carol234'(하이픈 3개)와 'Mike----53443'(하이픈 4개)는 조건에서 제외된 것을 확인할 수 있습니다.