MySQL 대소문자 구분하지 않음 해결

Jiumn·2023년 8월 7일

MySQL

목록 보기
5/9

문제 상황

MySQL로 탈퇴한 회원들의 개인 정보를 에스터리스크(*)로 마스킹하는 UPDATE 쿼리를 날렸다. 테스트를 위해 특정 아이디를 WHERE 조건으로 잡았는데 ROW 2개가 UPDATE 되었다. 변경된 두 아이디를 확인해보니 나머지 문자열은 다 같은데 문자 하나만 대문자/소문자로 달랐다.

원인 및 해결

MySQL은 테이블 명과 컬럼명에 있어 대소문자를 구분하지만, VARCHAR, TEXT 타입의 데이터 조회 시에는 대소문자를 구분하지 않는다. 따라서 데이터의 대소문자를 구분하는 쿼리를 작성하고 싶으면 BINARY 함수를 사용해서 이진수로 변경된 값을 비교하도록 만들어야 한다.

SELECT * FROM member WHERE BINARY(id) = 'Jiumn'

또는 컬럼을 만들 때 데이터 타입을 VARBINARY로 만들어준다.

CREATE TABLE `test2` (
`item` VARBINARY(30) 
);
profile
Back-End Wep Developer. 꾸준함이 능력이다. Node.js, React.js를 주로 다룹니다.

0개의 댓글