안녕하세요.
MYSQL로 쿼리문을 작성하다가 실수로 조건절의 VARCHAR Field의 값을 0으로 쿼리를 했는데요
모든 데이터가 다 나오네요.
ex) select * from temp
where name = 0
name은 varchar 필드입니다.
MYSQL에서는 위의 쿼리 문장을 어떻게 받아들여서 실행하길래
이런 현상이 일어나는 것인가요?
추측컨데...
create table temp(name varchar(10));
insert into temp (name) values('a'), ('b'), ('1'), ('0'), (''), (null);
그런다음..
select * from temp where temp = 0
+------+ | name | +------+ | a | | b | | 0 | | | +------+
이런 형태네요. 숫자면 0에 대한 부분이 convert되는 듯하고 그외는 is not null에 대한 조건을 처리하는 듯하네요
varchar 나 char 타입에서 0 과의 비교는 not null ( null 의 반대) 에 대한 boolean 값을 비교합니다.