Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

NLS_CHARSET_DECL_LEN () Hàm trong Oracle

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00904 Số nhận dạng không hợp lệ ”cho một số nhận dạng trong một nhóm theo mệnh đề

  2. Tạo một bảng / chế độ xem phẳng của một tập hợp dữ liệu được xác định theo thứ bậc

  3. Bế tắc trong Oracle

  4. ORA-12170:TNS:Đã xảy ra thời gian chờ kết nối

  5. Từ khóa 'as' có được yêu cầu trong Oracle để xác định bí danh không?