포스팅 목차
o NLSSORT
문법
nlssort::=
목적
NLSSORT함수는 char를 정렬하기 위하여 이용되는 bytes의 문자열을 반환한다.
char과 'nslparam'의 데이터형은 CHAR, VARCHAR2, NCHAR, NVARCHAR2를 취한다. 반환되는 문자열은 RAW 데이터형이다.
'nlsparam'의 값은 이 형태를 가질 수 있다.
'NLS_SORT = sort'
sort는 언어상 소트 순서 또는 BINARY 중에 하나이다. 만약 'nlsparam'을 생략하면, 이 함수는 세션에 대하여 기본적 소트 순서를 이용한다. 만약 BINARY를 지정하면, 이 함수는 char을 반환한다. 만약 'nlsparam'을 지정했다면, 접미사 -ai를 추가하여 accent-insensitive(엑센트 기호 유무가 필요 없는) 소트를 하거나,-ci를 추가하여 case-insensitive(대소 문구분이 없는) 소트를 실시할 수 있다.
accent- 와 case-insensitive 소트에 대해서는 Oracle Database Globalization Support Guide 참조.
이 함수는 CLOB 데이터를 직접적으로 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 변환을 통해서 인수로 전달될 수 있다.
NLSSORT 함수는 입력 문자열을 소팅하여 문자열을 반환. 단어의 withe space나 문자가 알파 문자열이 아니더라도 상관없다. nlsparam는 ‘nls_sort = sort'와 같은 형식을 가지며, 여기서 sort는 linguistic sort sequence나 binary중의 하나이다.
예제
이 함수는 문자열의 이진수 값보다는 언어 소트 기준을 기본으로 한 소트와 비교를 지정할 수 있다. 다음 예제는 2개의 값을 포함한 test 테이블을 생성하고, 어떻게 값이 NLSSORT함수에 의해 순서화되는가를 볼 수 있다.
Oracle Program |
CREATE TABLE test (name VARCHAR2(15));
INSERT INTO test VALUES ('Gaardiner');
INSERT INTO test VALUES ('Gaberd');
INSERT INTO test VALUES ('Gaasten');
SELECT * FROM test ORDER BY name;
Results |
NAME
---------------
Gaardiner
Gaasten
Gaberd
Oracle Program |
SELECT *
FROM test
ORDER BY NLSSORT(name, 'NLS_SORT = XDanish');
Results |
NAME
---------------
Gaberd
Gaardiner
Gaasten
다음 예제는 비교 연산으로 NLSSORT 함수를 이용하는 방법을 보여준다.
Oracle Program |
SELECT * FROM test WHERE name > 'Gaberd';
Results |
no rows selected
Oracle Program |
SELECT *
FROM test
WHERE NLSSORT(name, 'NLS_SORT = XDanish') > NLSSORT('Gaberd', 'NLS_SORT = XDanish');
Results |
NAME
---------------
Gaardiner
Gaasten
만약 빈번하게 동일한 언어 소트 기준을 사용하는 비교 연산으로 이용한다면, 더 효율적 대안을 고려하자: NLS_COMP파라미터(데이터 베이스용이나 현재 세션 어느 쪽이든)에 ANSI를 설정하고, 원하는 소트 기준으로 세션에 대해 NLS_SORT 파라미터를 설정한다. 오라클 데이터 베이스는 현재의 세션에서 모든 소팅과 비교 연산에 대하여 기본적으로 소트 기준을 이용한다.
Oracle Program |
ALTER SESSION SET NLS_COMP = 'ANSI';
ALTER SESSION SET NLS_SORT = 'XDanish';
SELECT * FROM test WHERE name > 'Gaberd';
Results |
NAME
---------------
Gaardiner
Gaasten
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
【오라클(Oracle) SQL 함수】 NTILE 함수 (0) | 2018.12.25 |
---|---|
[오라클 함수] NLS_UPPER 함수 (0) | 2018.12.25 |
【오라클(Oracle) SQL 함수】 NLS_LOWER 함수 (0) | 2018.12.25 |
[오라클 함수] NLS_INITCAP 함수 (0) | 2018.12.25 |
[오라클 함수] NLS_CHARSET_NAME 함수 (0) | 2018.12.25 |
댓글