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

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

В Oracle Database, DECOMPOSE() функцията връща резултата от прилагането на едно от декомпозиции на Unicode към неговия низ аргумент. Разлагането се определя от втория (незадължителен) аргумент.

Това е обратното на COMPOSE() функция.

Синтаксис

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

DECOMPOSE( string [, { 'CANONICAL' | 'COMPATIBILITY' } ] )

Където и двата аргумента могат да бъдат всеки от CHAR , VARCHAR2 , NCHAR или NVARCHAR2 типове данни или тип, който може да бъде имплицитно преобразуван в VARCHAR2 или NVARCHAR2 .

Относно втория (незадължителен) аргумент:

  • CANONICAL води до канонична декомпозиция, както е описано в стандартната дефиниция на Unicode D68, и връща низ във формата за нормализиране на NFD.
  • COMPATIBILITY води до разлагане на съвместимост, както е описано в стандартната дефиниция на Unicode D65, и връща низ във формата за нормализиране на NFKD.

Поведението по подразбиране е да се приложи каноничната декомпозиция.

Пример

Ето един пример:

SELECT DECOMPOSE('ã') FROM DUAL;

Резултат:

Следният пример обаче е по-добра демонстрация:

SELECT ASCIISTR(DECOMPOSE('ã')) FROM DUAL;

Резултат:

a\0303

Тук използвахме ASCIISTR() за да върнете ASCII версия на резултата от DECOMPOSE() в набора от знаци на базата данни.

Ето какво се случва, ако използваме ASCIISTR() без DECOMPOSE() :

SELECT ASCIISTR('ã') FROM DUAL;

Резултат:

\00E3

Символи, които не са Unicode

Ако наборът от символи на аргумента не е един от наборите от символи на Unicode, аргументът се връща непроменен.

Пример:

SELECT ASCIISTR(DECOMPOSE('a')) FROM DUAL;

Резултат:

a

Нулев аргумент

Ако аргументът е null , резултатът е null :

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

Резултат:

null

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

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

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

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

SELECT DECOMPOSE()
FROM DUAL;

Резултат:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

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

SELECT DECOMPOSE('a', 'b')
FROM DUAL;

Резултат:

Error report -
ORA-12702: invalid NLS parameter string used in SQL function

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите текущата дата в Oracle

  2. Oracle - Как да получа действителния размер на конкретен РОД?

  3. Как да премахнете част от низа в oracle

  4. проблем ORA-00001:нарушено уникално ограничение идва при INSERT/UPDATE

  5. Използване на Oracle JDeveloper 12c с Oracle Database 12c на Oracle Cloud Platform, част 2