В 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()
функция.