Trong Oracle, NLS_CHARSET_DECL_LEN()
hàm trả về độ dài khai báo (tính bằng số ký tự) của một NCHAR
cột.
Cú pháp
Cú pháp như sau:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Ở đâu byte_count
là chiều rộng của cột và char_set_id
là ID bộ ký tự của cột.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;
Kết quả:
100
Đây là nó với một ID bộ ký tự khác:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;
Kết quả:
50
Lấy ID bộ ký tự
Chúng ta có thể sử dụng NLS_CHARSET_ID()
hàm để trả về ID bộ ký tự cho một bộ ký tự nhất định:
Ví dụ:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL;
Kết quả:
50
Đối số rỗng
Nếu bất kỳ đối số nào là null
, kết quả là null
:
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;
Kết quả:
R1 R2 _______ _______ 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
Việc gọi hàm mà không chuyển bất kỳ đối số nào dẫn đến lỗi:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN() 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 NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN(100, 1, 2) 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: