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

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

В Oracle, NLS_INITCAP() функцията връща своя аргумент с първата буква на всяка дума с главни букви и всички останали букви с малки.

Въпреки това, действителната капитализация ще зависи от използваното съпоставяне. Например, това може да доведе до главна буква от повече от първата буква.

Той е подобен на INITCAP() функция, с изключение на това, че приема втори аргумент, който ви позволява да посочите съпоставянето. Съпоставянето обработва специални езикови изисквания за преобразуване на главни и главни букви.

Синтаксис

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

NLS_INITCAP(char [, 'nlsparam' ])

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

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

'NLS_SORT = sort'

Където sort е съпоставяне с име.

Ако пропуснете този аргумент, се използва определеното съпоставяне на функцията.

Пример

Ето един прост пример за демонстрация:

SELECT NLS_INITCAP('the lake')
FROM DUAL;

Резултат:

   NLS_INITCAP('THELAKE') 
_________________________ 
The Lake                 

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

Ето пример, който демонстрира как определянето на съпоставяне може да промени резултатите:

SELECT 
    NLS_INITCAP('het ijsselmeer') AS c1,
    NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;

Резултат:

               C1                C2 
_________________ _________________ 
Het Ijsselmeer    Het IJsselmeer    

Забележете, че във втората колона, първите две букви на IJsselmeer са главни, докато първата колона пише само първата буква.

На холандски ij се счита за една буква и така и двата знака се изписват с главни букви, когато се появят в началото на изречение или собствено име.

Имайте предвид, че NLS_SORT отменя съпоставянето на първия аргумент само в момента на изпълнение. Следователно следният оператор връща съпоставянето на първия аргумент, а не на втория:

SELECT
    COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
FROM DUAL;

Резултат:

        COLLATION 
_________________ 
USING_NLS_COMP   

Темата за съпоставянето може да бъде доста сложна. Вижте Приложение C в Ръководството за поддръжка на глобализация на базата данни на Oracle за правилата за определяне на съпоставяне и правилата за извличане на съпоставяне за тази функция.

Ами ако предам всички ГЛАВНИ букви?

Предаването на всички главни букви не променя резултата:

SELECT 
    NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;

Резултат:

           RESULT 
_________________ 
Het IJsselmeer    

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

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

SET NULL 'null';

SELECT 
    NLS_INITCAP('het IJsselmeer', null) AS r1,
    NLS_INITCAP(null, 'NLS_SORT = XDutch') AS r2,
    NLS_INITCAP(null, null) AS r3
FROM DUAL;

Резултат:

     R1      R2      R3 
_______ _______ _______ 
null    null    null    

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

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

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

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

SELECT NLS_INITCAP()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT NLS_INITCAP()
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 NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL
Error at Command Line : 1 Column : 59
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  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 към SQL Server през защитена връзка

  3. Създаване на централен изглед в SQL от SQL таблица

  4. SYS_EXTRACT_UTC() Функция в Oracle

  5. Как да декларирате потребителско дефинирано изключение с помощта на променлива за изключение в базата данни на Oracle