반응형
해당 글은 MySQL에서 정렬을 할 때 대소문자를 구분하여 정렬하는 방법과 구분하지 않고 정렬하는 방법에 대해서 확인해 봅니다.
1) 문자열을 대소문자를 구분하지 않고 정렬
💡 일반적으로 ORDER BY ~ 문을 사용하는 것은 대소문자를 구분하지 않고 정렬을 하는 방법입니다.
💡 [예시]
- 동물 정보 테이블(ANIMAL_INS) 내에 NAME을 기준으로 대소문자를 구분하지 않고 정렬을 수행합니다.
SELECT t1.ANIMAL_ID, t1.NAME
FROM ANIMAL_INS t1
WHERE t1.NAME LIKE '%el%'
AND t1.ANIMAL_TYPE = 'Dog'
ORDER BY t1.NAME;
2) 문자열을 대소문자를 구분하여 정렬 방법
💡 대소문자를 구분하여 정렬하는 방법은 ‘이진 형태’로 비교하여 정렬을 하는 방법을 통해 대소문자를 정렬합니다.
SELECT t1.ANIMAL_ID, t1.NAME
FROM ANIMAL_INS t1
WHERE t1.NAME LIKE '%el%'
AND t1.ANIMAL_TYPE = 'Dog'
ORDER BY BINARY t1.NAME;
1. BINARY
💡 BINARY
- SQL에서 사용되는 정렬 옵션입니다. 이 옵션을 사용하면 문자열을 이진(binary) 형태로 비교하여 정렬할 수 있습니다. 일반적으로 문자열을 정렬할 때는 문자의 사전식 순서를 따르지만, BINARY를 사용하면 문자의 이진 표현을 기준으로 정렬됩니다.
- 이는 대소문자나 문자열의 다른 특성에 관계없이 정확한 이진 값을 기준으로 정렬하고자 할 때 유용합니다.
- 예를 들어, "apple", "Banana", "cherry"라는 문자열을 BINARY를 적용하여 정렬하면 "Banana", "apple", "cherry" 순서로 정렬됩니다. 이는 대소문자를 구분하지 않고 정확한 문자열 값을 기준으로 정렬하기 때문에 발생하는 결과입니다.
💡 [ 더 알아보기 ]
💡PostgreSQL이나 Oracle에서도 동일한 기능을 수행하는 함수가 있는가?
- POSTGRE: BINARY 대신 COLLATE "C"를 사용하여 이진(binary) 정렬을 수행할 수 있습니다.
- ORACLE: BINARY 대신 NLS_SORT=BINARY 세션 파라미터를 설정하여 이진(binary) 정렬을 수행할 수 있습니다.
💡 [참고] 해당 문제를 풀면서 해당 글을 구성하였습니다.
반응형
'DB > Short SQL문' 카테고리의 다른 글
[DB/Short] MySQL SQL Function : 랜덤 숫자 만들기 (0) | 2024.04.08 |
---|---|
[DB/Short] MySQL SQL Function : 문자열 내에 랜덤 문자열 추출하기 (0) | 2024.04.08 |
[DB/Short] MySQL SQL Function : 랜덤 문자, 랜덤 이름 만들기 (0) | 2024.04.08 |
[DB/Short] MySQL : 집계함수로 얻은 값을 조건절에서 사용하는 경우 -서브쿼리, HAVING (1) | 2023.10.05 |
[DB/Short] MySQL: DATETIME ↔ DATE 타입 간의 변환 방법 (0) | 2023.10.05 |