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

MySQL에서 'false'가 특정 문자열과 일치할 수 있을까요?

MySQL에서 'false'를 활용한 문자열 매칭

네, 가능합니다. MySQL에서는 false를 0으로 취급하여 문자열과 비교·매칭할 수 있습니다. 이는 MySQL의 암시적 타입 변환(implicit type conversion) 특성 때문인데, 숫자와 문자열을 연산하면 문자열이 자동으로 숫자로 변환됩니다.

실제 예제를 통해 확인해 보겠습니다.

1. 테이블 생성

먼저 테스트용 테이블을 생성합니다.

mysql> create table DemoTable804 (
   Id varchar(100)
);
Query OK, 0 rows affected (0.66 sec)

2. 데이터 삽입

insert 명령어를 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable804 values('101John');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable804 values('Carol1002');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable804 values('1000');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable804 values('1010Bob');
Query OK, 1 row affected (0.10 sec)

3. 전체 레코드 조회

select 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable804;

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

+-----------+
| Id |
+-----------+
| 101John |
| Carol1002 |
| 1000 |
| 1010Bob |
+-----------+
4 rows in set (0.00 sec)

4. 'false'(0)를 이용한 매칭 쿼리

이제 0(false)과 문자열 Id 컬럼을 더하는 쿼리를 실행해 보겠습니다.

mysql> select 0+Id from DemoTable804;

여기서 중요한 점은 문자열이 숫자로 시작하는 경우에만 해당 숫자 부분까지 변환된다는 것입니다. 만약 문자열의 첫 글자가 숫자가 아니라면 변환이 이루어지지 않고 0이 반환됩니다. 아래 결과의 두 번째 행('Carol1002')이 바로 그런 경우입니다.

+------+
| 0+Id |
+------+
| 101 |
| 0 |
| 1000 |
| 1010 |
+------+
4 rows in set, 2 warnings (0.00 sec)

결과 분석

  • '101John' → 앞의 숫자 '101'만 변환되어 101 반환
  • 'Carol1002' → 첫 글자가 문자이므로 변환 불가, 0 반환
  • '1000' → 완전한 숫자이므로 그대로 1000 반환
  • '1010Bob' → 앞의 숫자 '1010'만 변환되어 1010 반환

참고로 실행 결과에 "2 warnings"가 표시된 것은 문자열을 숫자로 강제 변환하는 과정에서 경고가 발생했기 때문입니다. 실무 환경에서는 이러한 암시적 변환에 의존하기보다 CAST()나 REGEXP 등을 사용해 명시적으로 처리하는 것이 안전하고 권장됩니다.