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

Hàm NLSSORT () trong Oracle

Trong Oracle, NLSSORT() hàm trả về một khóa đối chiếu cho một giá trị ký tự nhất định và một đối chiếu được chỉ định rõ ràng hoặc ngầm định.

Hàm có thể hữu ích để thực hiện so sánh với các giá trị chuỗi dựa trên một đối chiếu được chỉ định.

Cú pháp

Cú pháp như sau:

NLSSORT(char [, 'nlsparam' ])

Trong đó cả char và ‘ nlsparam ‘Có thể là bất kỳ kiểu dữ liệu nào CHAR , VARCHAR2 , NCHAR hoặc NVARCHAR2 .

'nlsparam' đối số có thể có dạng sau:

'NLS_SORT = collation'

Nơi collation là tên của đối chiếu ngôn ngữ hoặc BINARY .

NLSSORT() sử dụng đối chiếu được chỉ định để tạo khóa đối chiếu. Nếu bạn bỏ qua ‘ nlsparam ‘, Thì hàm sử dụng đối chiếu bắt nguồn của đối số char .

Ví dụ

Dưới đây là ví dụ về giá trị trả về của hàm:

SELECT 
    NLSSORT('Chess') AS Result
FROM DUAL;

Kết quả:

         RESULT 
_______________ 
436865737300   

Chỉ định một đối chiếu

Trong ví dụ này, tôi chỉ định một đối chiếu:

SELECT 
    NLSSORT('Schach', 'NLS_SORT=XGERMAN') AS Result
FROM DUAL;

Kết quả:

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

So sánh hai chuỗi

Dưới đây là ví dụ về cách NSSORT() hàm có thể được sử dụng để so sánh hai chuỗi dựa trên các quy tắc ngôn ngữ của chúng:

DECLARE 
    v1 NVARCHAR2(10) := 'Schach';
    v2 NVARCHAR2(10) := 'Schabsel';
BEGIN
    IF NLSSORT(v1, 'NLS_SORT=XGERMAN') > NLSSORT(v2, 'NLS_SORT=XGERMAN') THEN
        DBMS_OUTPUT.PUT_LINE( 'Yes' );
    ELSE
        DBMS_OUTPUT.PUT_LINE( 'No' );
    END IF;
END;

Kết quả:

Yes

Giá trị rỗng

Chuyển null trả về null :

SELECT
    NLSSORT(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLSSORT('fasilə', null) AS r2,
    NLSSORT(null, null) AS r3
FROM DUAL;

Kết quả:

     R1      R2      R3 
_______ _______ _______ 
null    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

Gọi NLSSORT() mà không chuyển bất kỳ đối số nào sẽ trả về lỗi:

SELECT NLSSORT()
FROM DUAL;

Kết quả:

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

SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NLSSORT('coffee', 'NLS_SORT = XSPANISH', 'time')
FROM DUAL
Error at Command Line : 1 Column : 49
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

Thông tin thêm

Xem Tham chiếu ngôn ngữ SQL của Oracle để biết thêm thông tin về NLSSORT() chức năng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để nhập ký tự dòng mới trong Oracle?

  2. Làm cách nào để thêm số 0 đứng đầu trong một số trong truy vấn SQL của Oracle?

  3. Hỏi ý kiến:Một trình tự cho tất cả các bảng

  4. Có bất kỳ hàm băm nào trong PL / SQL không?

  5. Vòng lặp lồng nhau Tham gia vào Oracle 11g