Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja NLSSORT() w Oracle

W Oracle NLSSORT() funkcja zwraca klucz sortowania dla podanej wartości znaku oraz jawnie lub niejawnie określone sortowanie.

Funkcja może być przydatna do wykonywania porównań z wartościami ciągów na podstawie określonego sortowania.

Składnia

Składnia wygląda tak:

NLSSORT(char [, 'nlsparam' ])

Gdzie oba char i „nlsparam ‘ może być dowolnym typem danych CHAR , VARCHAR2 , NCHAR lub NVARCHAR2 .

'nlsparam' argument może mieć następującą postać:

'NLS_SORT = collation'

Gdzie collation to nazwa zestawienia językowego lub BINARY .

NLSSORT() używa określonego sortowania do wygenerowania klucza sortowania. Jeśli pominiesz „nlsparam ‘, wtedy funkcja używa wyprowadzonego sortowania argumentu char .

Przykład

Oto przykład wartości zwracanej przez funkcję:

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

Wynik:

         RESULT 
_______________ 
436865737300   

Określ sortowanie

W tym przykładzie określam sortowanie:

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

Wynik:

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

Porównywanie dwóch ciągów

Oto przykład, jak NSSORT() funkcja może być użyta do porównania dwóch ciągów na podstawie ich reguł językowych:

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;

Wynik:

Yes

Wartości puste

Przekazywanie null zwraca null :

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

Wynik:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Nieprawidłowa liczba argumentów

Wywołanie NLSSORT() bez przekazywania żadnych argumentów zwraca błąd:

SELECT NLSSORT()
FROM DUAL;

Wynik:

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:

A przekazanie zbyt wielu argumentów skutkuje błędem:

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

Wynik:

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:

Więcej informacji

Zobacz Oracle SQL Language Reference, aby uzyskać więcej informacji o NLSSORT() funkcja.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę połączyć wiele wierszy w listę rozdzielaną przecinkami w Oracle?

  2. Jak zaszyfrować hasło w Oracle?

  3. 50 odcieni egzaminu certyfikacyjnego Oracle Database

  4. Czy Oracle przechowuje końcowe zera dla typu danych Number?

  5. Kopia zapasowa bazy danych Oracle:Rodzaj kopii zapasowej i strategia tworzenia kopii zapasowych