나는 당연하게 LIKE '%t'
같은 sql을 쓰면,
소문자 t로끝나는 데이터만 가져올 줄 알았다.
그러나 아니었다 ! 대문자 T로 끝나는 데이터도 가져왔다.
내가 원했던 쿼리는 특정 문자로 끝나는 데이터를 제외하는 것이었다.
예를들어 나는 20번 데이터인 tes_T처럼 _T
로 끝나는 데이터를 제외하고 싶었다.
그런데 실제로는 16번, 20번, 21번 데이터가 모두 제외되었다.
아래 캡쳐로 확인할 수 있다.
대소문자 구분해서 쿼리날리기
BINARY 키워드를 활용하면 된다.
소문자 t로 끝나는 데이터만 검색했고, 실제로 대문자 T로 끝나는 데이터는 제외되었다.
대문자 T로 끝나는 데이터만 검색했고, 실제로 T로 끝나는 데이터만 출력됐다.
하단바 검색하기
하단바가 검색이 되지 않는 이유는 해당 키워드는 다른 역할을 하기 때문이다.
WHERE CustomerName LIKE 'a_%'
-> Finds any values that start with "a" and are at least 2 characters in length
a로 시작하고 적어도 두글자 이상의 글자를 찾는다.
WHERE CustomerName LIKE 'a__%'
-> Finds any values that start with "a" and are at least 3 characters in length
a로 시작하고 적어도 세글자 이상의 글자를 찾는다.
( 출처 : https://www.w3schools.com/sql/sql_like.asp )
binary를 제외하고 검색해봤다. 소문자 대문자 상관없이 두글자 이상의 t로 끝나는 결과가 출력된다.
탈출문자를 명시해줘서 하단바가 들어간 데이터를 찾아낼 수 있다.
애초에 잘못된 쿼리를 날리고 있는지도 모르고, 그냥 넘어갈 뻔했다.
정말 치명적이라고 생각한다.
다양한 케이스를 생각해내서, 다시는 이런실수를 하지 말아야겠다고 생각했다.