티스토리 뷰
일반적인 CHAR, VARCHAR, TEXT 타입의 컬럼에 조건 비교를 하면 대소문자 구분을 하지 않는다.
조건에서 대소문자 구분이 필요한 경우 BINARY 함수를 사용하면 된다.
SELECT ID FROM MEMBER WHERE ID = 'ref';
SELECT ID FROM MEMBER WHERE BINARY(ID) = 'Ref';
MySQL 공식 문서에는 아래와 같이 언급하고 있다.
For nonbinary strings (CHAR, VARCHAR, TEXT), string searches use the collation of the comparison operands.
For binary strings (BINARY,VARBINARY, BLOB), comparisons use the numeric values of the bytes in the operands;
this means that for alphabetic characters, comparisons will be case sensitive.
만약 BINARY 함수를 사용하지 않고 대소문자를 구분하고 싶다면, BINARY 타입으로 테이블을 생성하면 된다.
CREATE TABLE `user` (
`id` varbinary(20) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
이때 주의할 점은 BLOB으로 처리되어 일반적인 문자열로 변환할 때 또 다른 작업이 필요하다. 이럴 때는 아래와 같이 BINARY 옵션을 추가한다.
CREATE TABLE `user` (
`id` varchar(20) binary DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
이렇게 테이블을 생성하면 VARCHAR 타입이면서 대소문자를 구분할 수 있게 된다.
'데이터베이스 > SQL' 카테고리의 다른 글
[SQL] MySQL 주차 구하기 WEEK (0) | 2020.09.17 |
---|---|
[SQL] MySQL 날짜 요일 구하기 및 주의사항 (0) | 2020.09.01 |
[SQL] MySQL 구분자로 필드 출력 GROUP_CONCAT (0) | 2020.07.01 |
[SQL] MySQL 하루, 일주일, 한달 데이터 조회하기 (0) | 2020.06.24 |
[SQL] MySQL 버전에 따라 다른 VARCHAR LENGTH (0) | 2020.02.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- Java
- spring
- Eclipse
- Maven
- 프로그래머
- 오라클 내장 함수
- 경력관리
- 제주도 여행
- effective java
- 오라클
- Collection
- Tomcat
- 리액트 16
- 제주도 3박4일 일정
- Linux 명령어
- 회고
- 자바스크립트
- 자바
- 성능분석
- 프로그래머스
- React
- 이직
- 소프트웨어공학
- 정렬 알고리즘
- 개발환경
- 리눅스 명령어
- 리액트
- sort algorithm
- javascript
- SQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함