728x90
반응형
** ASCII 코드의 값 범위
45217 ~ 51454 -- 한글
48 ~ 57 -- 숫자
65 ~ 90 -- 대문자
97 ~ 122 -- 소문자
ASCII함수로 정렬하기
WITH TEST AS(
SELECT '777' AS NAME FROM DUAL UNION ALL
SELECT '567' AS NAME FROM DUAL UNION ALL
SELECT '0' AS NAME FROM DUAL UNION ALL
SELECT '가나다라마바사' AS NAME FROM DUAL UNION ALL
SELECT 'A' AS NAME FROM DUAL UNION ALL
SELECT 'B' AS NAME FROM DUAL UNION ALL
SELECT 'a' AS NAME FROM DUAL UNION ALL
SELECT 'C' AS NAME FROM DUAL UNION ALL
SELECT ' C' AS NAME FROM DUAL UNION ALL
SELECT 'd' AS NAME FROM DUAL UNION ALL
SELECT '나' AS NAME FROM DUAL
)
SELECT NAME,
CASE WHEN ASCII(UPPER(NAME)) > 45217 THEN '1' -- 한글
WHEN ASCII(UPPER(NAME)) BETWEEN '65' AND '90' THEN '2' -- 알파벳
WHEN ASCII(UPPER(NAME)) BETWEEN '48' AND '57' THEN '3' -- 숫자
ELSE '4' -- 기타
END AS SORT_CODE
FROM TEST
ORDER BY SORT_CODE ASC, NAME ASC
728x90
반응형
'Oracle' 카테고리의 다른 글
[Oracle] 윤년/평년 구하기 (0) | 2024.02.23 |
---|---|
[Oracle] 테이블 중복값 중에 최신값 가져오는 방법 (0) | 2024.02.23 |
ORA-06502: PL/SQL: 수치 또는 값 오류 (0) | 2023.07.20 |
오라클 문자열 자르기 컬럼 구분값 자르기 (0) | 2023.04.24 |
RDS 세션 Kill 하기 (0) | 2023.03.20 |
댓글