728x90
대소문자 구분 문제
예를들어 소문자 g가 포함된 값들을 찾는다고 할 때,
조건식에 소문자 g를 썼는데 대문자 G가 포함되어 있는 row도 함께 조회가 되어버린다.
이것은 mySQL의 기본 설정 때문이다.
테이블에 적용된 기본 설정을 보는 방법은.
위 그림의 i 표시를 클릭하면된다.
여러 항목들 중에서 Table collation 항목을 보면된다.
이 항목은 문자열이 서로 동일한지를 비교할 때 적용되는 설정이다.
그 뒤에 utf8mb4_0900_ai_ci 라는 값이 써있습니다.
여기서 ci는 case-insensitive의 약자로 문자열이 동일한지 확인할 때, 대소문자를 구별하지 않겠다는 뜻이다.
바로 이 설정 때문에 아까 대소문자가 달라도 알파벳만 같으면 같다고 판단하는 것이다.
만약 이 설정을 다른 걸로 변경하면 대소문자 구분을 하도록 바꿀 수 있다.
BINARY
** 설정에 상관없이 늘 대소문자를 구분하도록 쿼리를 만들 수 있다.
지금 %g% 앞에 BINARY라는 단어를 붙여 소문자 g가 포함된 문자열만 조회할 수 있다.
(BINARY란 ‘이진의, 0과 1로 된’이라는 뜻이다.)
대문자도 binary로 잘 구분할 수 있다.
대문자 G가 있는 문자열만 잘 뽑아낼 수 있다.
728x90
'IT 정보 > 코딩' 카테고리의 다른 글
[my SQL] sql의 집계함수와 산술함수 (0) | 2023.03.01 |
---|---|
[my SQL] sql null값 채우기, null의 특징 (0) | 2023.03.01 |
[my SQL] Workbench 사용법 (0) | 2023.02.27 |
[mySQL] 데이터 타입 바꿔서 검색 cast() (0) | 2023.02.27 |
[My SQL] 기본키(Primary Key) 특징, 종류 (0) | 2023.02.22 |