[my SQL] 대소문자 구분 BINARY

728x90

대소문자 구분 문제

예를들어 소문자 g가 포함된 값들을 찾는다고 할 때,

조건식에 소문자 g를 썼는데 대문자 G가 포함되어 있는 row도 함께 조회가 되어버린다.

 

이것은 mySQL의 기본 설정 때문이다.

테이블에 적용된 기본 설정을 보는 방법은.

위 그림의 i 표시를 클릭하면된다.

여러 항목들 중에서 Table collation 항목을 보면된다.

 

이 항목은 문자열이 서로 동일한지를 비교할 때 적용되는 설정이다.

그 뒤에 utf8mb4_0900_ai_ci 라는 값이 써있습니다.

 

여기서 cicase-insensitive의 약자로 문자열이 동일한지 확인할 때, 대소문자를 구별하지 않겠다는 뜻이다.

 

바로 이 설정 때문에 아까 대소문자가 달라도 알파벳만 같으면 같다고 판단하는 것이다.

 

만약 이 설정을 다른 걸로 변경하면 대소문자 구분을 하도록 바꿀 수 있다.

 

BINARY

** 설정에 상관없이 늘 대소문자를 구분하도록 쿼리를 만들 수 있다.

지금 %g% 앞에 BINARY라는 단어를 붙여 소문자 g가 포함된 문자열만 조회할 수 있다.

 

(BINARY란 ‘이진의, 0과 1로 된’이라는 뜻이다.)

 

대문자도 binary로 잘 구분할 수 있다.

대문자 G가 있는 문자열만 잘 뽑아낼 수 있다.

728x90