Trong Cơ sở dữ liệu Oracle, COLLATION()
hàm trả về tên của đối chiếu dẫn xuất cho đối số của nó.
Cú pháp
Cú pháp như sau:
COLLATION(expr)
Ở đâu expr
phải đánh giá thành một chuỗi ký tự thuộc loại CHAR
, VARCHAR2
, LONG
, NCHAR
hoặc NVARCHAR2
.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT COLLATION('Boat')
FROM DUAL;
Kết quả:
USING_NLS_COMP
Ví dụ với COLLATE
Mệnh đề
Đây là những gì sẽ xảy ra khi chúng tôi sử dụng COLLATE
mệnh đề chỉ định rõ ràng đối chiếu:
SELECT COLLATION('Boat' COLLATE LATIN_AI)
FROM DUAL;
Kết quả:
LATIN_AI
Cân nhắc khi sử dụng NLS_SORT
COLLATION()
hàm chỉ trả về đối chiếu giới hạn dữ liệu chứ không phải đối chiếu động được đặt bởi NLS_SORT
tham số.
Ví dụ:
SELECT COLLATION('Boat' COLLATE USING_NLS_SORT)
FROM DUAL;
Kết quả:
USING_NLS_SORT
Bạn có thể sử dụng SYS_CONTEXT()
hàm trả về giá trị của NLS_SORT
tham số:
SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;
Kết quả:
BINARY
Tuy nhiên, bất kỳ hậu tố nào như _CI
, _AI
và _CS
được trả lại:
SELECT
COLLATION('Boat' COLLATE USING_NLS_SORT_CI) AS "_CI",
COLLATION('Boat' COLLATE USING_NLS_SORT_CS) AS "_CS",
COLLATION('Boat' COLLATE USING_NLS_SORT_AI) AS "_AI"
FROM DUAL;
Kết quả:
_CI _CS _AI ____________________ ____________________ ____________________ USING_NLS_SORT_CI USING_NLS_SORT_CS USING_NLS_SORT_AI
Đối số rỗng
Đối chiếu được trả về, ngay cả khi chuyển null
:
SELECT COLLATION(null)
FROM DUAL;
Kết quả:
USING_NLS_COMP
Số lượng đối số không chính xác
Việc gọi hàm mà không chuyển bất kỳ đối số nào dẫn đến lỗi:
SELECT COLLATION()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT COLLATION() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Và việc chuyển quá nhiều đối số cũng dẫn đến lỗi:
SELECT COLLATION('Boat', 'Dang')
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT COLLATION('Boat', 'Dang') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: