Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция NLSSORT() в Oracle

В Oracle, NLSSORT() функцията връща ключ за съпоставяне за дадена символна стойност и изрично или имплицитно посочено съпоставяне.

Функцията може да бъде полезна за извършване на сравнения със стойности на низове въз основа на определено съпоставяне.

Синтаксис

Синтаксисът е така:

NLSSORT(char [, 'nlsparam' ])

Където и двете char и „nlsparam ‘ може да бъде всеки от типовете данни CHAR , VARCHAR2 , NCHAR или NVARCHAR2 .

'nlsparam' аргументът може да има следната форма:

'NLS_SORT = collation'

Където collation е името на лингвистично съпоставяне или BINARY .

NLSSORT() използва посоченото съпоставяне, за да генерира ключа за съпоставяне. Ако пропуснете „nlsparam ‘, тогава функцията използва извлеченото съпоставяне на аргумента char .

Пример

Ето пример за връщана стойност на функцията:

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

Резултат:

         RESULT 
_______________ 
436865737300   

Посочете колекция

В този пример посочвам съпоставяне:

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

Резултат:

                         RESULT 
_______________________________ 
691E37141E370003010101010100   

Сравняване на два низа

Ето пример за това как NSSORT() функцията може да се използва за сравняване на два низа въз основа на техните езикови правила:

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;

Резултат:

Yes

Нулеви стойности

Предаването на null връща null :

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

Резултат:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Неправилен брой аргументи

Извикване на NLSSORT() без подаване на аргументи връща грешка:

SELECT NLSSORT()
FROM DUAL;

Резултат:

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:

И предаването на твърде много аргументи води до грешка:

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

Резултат:

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:

Повече информация

Вижте справочника за Oracle SQL език за повече информация относно NLSSORT() функция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 начина да форматирате резултатите от заявката си в SQLcl (Oracle)

  2. Как да конвертирам стойности, разделени със запетая, в редове в Oracle?

  3. Защо е поискано невалидно преобразуване КОД НА ГРЕШКА:17132?

  4. променете размера на типа данни в sql

  5. Извикване на запаметена процедура на Oracle с изходен параметър от SQL Server