Trong Oracle, NLS_CHARSET_ID()
hàm trả về số ID bộ ký tự của một bộ ký tự nhất định. Bạn chuyển tên bộ ký tự làm đối số và nó trả về ID của nó.
Cú pháp
Cú pháp như sau:
NLS_CHARSET_ID(string)
Ở đâu string
là tên bộ ký tự mà bạn muốn trả lại ID.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT NLS_CHARSET_ID('AL16UTF16')
FROM DUAL;
Kết quả:
2000
Đây là với một bộ ký tự khác:
SELECT NLS_CHARSET_ID('UTF8')
FROM DUAL;
Kết quả:
871
Đối số rỗng
Nếu đối số là null
, kết quả là null
:
SET NULL 'null';
SELECT NLS_CHARSET_ID(null)
FROM DUAL;
Kết quả:
NLS_CHARSET_ID(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.
Tên bộ ký tự không hợp lệ
Chuyển tên bộ ký tự không hợp lệ dẫn đến null
:
SET NULL 'null';
SELECT NLS_CHARSET_ID('oops')
FROM DUAL;
Kết quả:
NLS_CHARSET_ID('OOPS') _________________________ null
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_ID()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT NLS_CHARSET_ID() 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:
Tuy nhiên, việc chuyển nhiều tên bộ ký tự dẫn đến ID của tên đầu tiên được trả về:
SELECT NLS_CHARSET_ID('UTF8', 'AL16UTF16')
FROM DUAL;
Kết quả:
871