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

Hàm NLS_COLLATION_NAME () trong Oracle

Trong Cơ sở dữ liệu Oracle, NLS_COLLATION_NAME() hàm trả về tên của một đối chiếu nhất định, dựa trên ID của nó. Bạn chuyển ID đối chiếu khi gọi hàm và nó trả về tên đối chiếu.

Cú pháp

Cú pháp như sau:

NLS_COLLATION_NAME(expr [, flag ])

Ở đâu expr là ID đối chiếu của loại NUMBER .

flag đối số là đối số tùy chọn chỉ áp dụng cho các đối chiếu Unicode Collation Algorithm (UCA). Nó xác định xem hàm nên trả về dạng ngắn hay dạng dài của tên đối chiếu.

flag đối số có thể là một trong những điều sau:

Flag Mô tả
'S' hoặc 's' Trả về dạng ngắn của tên đối chiếu.
'L' hoặc 'l' Trả về dạng dài của tên đối chiếu.

Giá trị mặc định cho cờ này là 'L' .

Ví dụ

Đây là một ví dụ cơ bản:

SELECT NLS_COLLATION_NAME(70)
FROM DUAL;

Kết quả:

XAZERBAIJANI

Dưới đây là một số ví dụ khác:

SELECT 
    NLS_COLLATION_NAME(4112) AS "1",
    NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;

Kết quả:

          1             2 
___________ _____________ 
FRENCH_M    CANADIAN_M   

Cờ dạng dài / ngắn

Như đã đề cập, chúng ta có thể chuyển một cờ tùy chọn để xác định xem trả về dạng ngắn hay dạng dài của tên đối chiếu.

SELECT 
    NLS_COLLATION_NAME(208920, 'L') AS "Long",
    NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;

Kết quả:

                                      Long           Short 
__________________________________________ _______________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN    UCA0620_THAI   

Giá trị mặc định cho cờ này là 'L' . Vì vậy, nếu chúng ta bỏ qua cờ, biểu mẫu dài sẽ được trả về:

SELECT 
    NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;

Kết quả:

                                   Default 
__________________________________________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN   

Tuy nhiên, cờ này chỉ áp dụng cho các đối chiếu của Thuật toán đối chiếu Unicode (UCA).

Nếu chúng tôi áp dụng cờ cho đối chiếu không phải UCA, chúng tôi không thấy sự khác biệt:

SELECT 
    NLS_COLLATION_NAME(4112, 'L') AS "1",
    NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;

Kết quả:

          1           2 
___________ ___________ 
FRENCH_M    FRENCH_M   

Đối chiếu Không hợp lệ

Chuyển tên đối chiếu không hợp lệ dẫn đến null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;

Kết quả:

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.

Đối số rỗng

Chuyển null trả về null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;

Kết quả:

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_COLLATION_NAME()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_COLLATION_NAME()
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ố cũng dẫn đến lỗi:

SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*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. cách tạo một thủ tục được lưu trữ trong oracle chấp nhận mảng tham số

  2. Cách sao chép người dùng trong Oracle

  3. Xử lý ExecuteScalar () khi không có kết quả nào được trả về

  4. Không thể biên dịch GI 12.1.0.2 và lỗi phân đoạn

  5. Sắp xếp lại các cột của bảng trong Oracle