In Oracle, il NLS_INITCAP()
La funzione restituisce il suo argomento con la prima lettera di ogni parola in maiuscolo e tutte le altre lettere in minuscolo.
Tuttavia, la capitalizzazione effettiva dipenderà dalle regole di confronto utilizzate. Ad esempio, potrebbe risultare in maiuscolo più della prima lettera.
È simile a INITCAP()
funzione, tranne per il fatto che accetta un secondo argomento che consente di specificare le regole di confronto. La raccolta gestisce requisiti linguistici speciali per le conversioni di casi.
Sintassi
La sintassi è questa:
NLS_INITCAP(char [, 'nlsparam' ])
Dove entrambi char
e 'nlsparam'
può essere uno qualsiasi dei tipi di dati CHAR
, VARCHAR2
, NCHAR
o NVARCHAR2
.
Il 'nlsparam'
argomento può avere la forma seguente:
'NLS_SORT = sort'
Dove sort
è una raccolta denominata.
Se ometti questo argomento, viene utilizzato il confronto determinato della funzione.
Esempio
Ecco un semplice esempio da dimostrare:
SELECT NLS_INITCAP('the lake')
FROM DUAL;
Risultato:
NLS_INITCAP('THELAKE') _________________________ The Lake
Specifica una confronto
Ecco un esempio che dimostra come la specifica di una confronto può alterare i risultati:
SELECT
NLS_INITCAP('het ijsselmeer') AS c1,
NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;
Risultato:
C1 C2 _________________ _________________ Het Ijsselmeer Het IJsselmeer
Nota che nella seconda colonna, le prime due lettere di IJsselmeer sono in maiuscolo, mentre la prima colonna mette in maiuscolo solo la prima lettera.
In olandese, ij è considerata come una lettera, quindi entrambi i caratteri vengono scritti in maiuscolo quando compaiono all'inizio di una frase o di un nome proprio.
Nota che NLS_SORT
sovrascrive le regole di confronto del primo argomento solo al momento dell'esecuzione. Pertanto, la seguente istruzione restituisce le regole di confronto del primo argomento, non del secondo:
SELECT
COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
FROM DUAL;
Risultato:
COLLATION _________________ USING_NLS_COMP
L'argomento delle collazioni può essere piuttosto complesso. Consulta l'Appendice C nella Guida al supporto per la globalizzazione del database Oracle per le regole di determinazione delle regole di confronto e le regole di derivazione delle regole di confronto per questa funzione.
Cosa succede se passo tutte le lettere MAIUSCOLE?
Il passaggio di tutte le lettere maiuscole non cambia il risultato:
SELECT
NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;
Risultato:
RESULT _________________ Het IJsselmeer
Valori Nulli
Se un argomento è null
, il risultato è 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;
Risultato:
R1 R2 R3 _______ _______ _______ null null null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null
si verifica come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi utilizzare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Conteggio argomenti errato
Chiamando NLS_INITCAP()
senza passare alcun argomento restituisce un errore:
SELECT NLS_INITCAP()
FROM DUAL;
Risultato:
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:
E il passaggio del numero errato di argomenti genera un errore:
SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;
Risultato:
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: