Trong Oracle, NLSSORT()
hàm trả về một khóa đối chiếu cho một giá trị ký tự nhất định và một đối chiếu được chỉ định rõ ràng hoặc ngầm định.
Hàm có thể hữu ích để thực hiện so sánh với các giá trị chuỗi dựa trên một đối chiếu được chỉ định.
Cú pháp
Cú pháp như sau:
NLSSORT(char [, 'nlsparam' ])
Trong đó cả char
và ‘ nlsparam
‘Có thể là bất kỳ kiểu dữ liệu nào CHAR
, VARCHAR2
, NCHAR
hoặc NVARCHAR2
.
'nlsparam'
đối số có thể có dạng sau:
'NLS_SORT = collation'
Nơi collation
là tên của đối chiếu ngôn ngữ hoặc BINARY
.
NLSSORT()
sử dụng đối chiếu được chỉ định để tạo khóa đối chiếu. Nếu bạn bỏ qua ‘ nlsparam
‘, Thì hàm sử dụng đối chiếu bắt nguồn của đối số char
.
Ví dụ
Dưới đây là ví dụ về giá trị trả về của hàm:
SELECT
NLSSORT('Chess') AS Result
FROM DUAL;
Kết quả:
RESULT _______________ 436865737300
Chỉ định một đối chiếu
Trong ví dụ này, tôi chỉ định một đối chiếu:
SELECT
NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;
Kết quả:
RESULT _______________________________ 691E37141E370003010101010100
So sánh hai chuỗi
Dưới đây là ví dụ về cách NSSORT()
hàm có thể được sử dụng để so sánh hai chuỗi dựa trên các quy tắc ngôn ngữ của chúng:
DECLARE
v1 NVARCHAR2(10) := 'Schach';
v2 NVARCHAR2(10) := 'Schabsel';
BEGIN
IF NLSSORT(v1, 'NLS_SORT=XGERMAN') > NLSSORT(v2, 'NLS_SORT=XGERMAN') THEN
DBMS_OUTPUT.PUT_LINE( 'Yes' );
ELSE
DBMS_OUTPUT.PUT_LINE( 'No' );
END IF;
END;
Kết quả:
Yes
Giá trị rỗng
Chuyển null
trả về null
:
SELECT
NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLSSORT('fasilə', null) AS r2,
NLSSORT(null, null) AS r3
FROM DUAL;
Kết quả:
R1 R2 R3 _______ _______ _______ null null null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null
xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Số lượng đối số không chính xác
Gọi NLSSORT()
mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:
SELECT NLSSORT()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT NLSSORT() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Và việc chuyển quá nhiều đối số dẫn đến lỗi:
SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time') FROM DUAL Error at Command Line : 1 Column : 49 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action:
Thông tin thêm
Xem Tham chiếu ngôn ngữ SQL của Oracle để biết thêm thông tin về NLSSORT()
chức năng.