I Oracle, NLS_UPPER()
funktion returnerar sitt argument med alla bokstäver i versaler.
Det liknar UPPER()
funktion, förutom att den accepterar ett andra argument som låter dig specificera sorteringen. Samlingen hanterar speciella språkliga krav för ärendekonverteringar.
Syntax
Syntaxen ser ut så här:
NLS_UPPER(char [, 'nlsparam' ])
Där både char
och 'nlsparam'
kan vara av vilken som helst av datatyperna CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
, eller NCLOB
.
'nlsparam'
argument kan ha följande form:
'NLS_SORT = sort'
Där sort
är en namngiven kollation.
Om du utelämnar det här argumentet används den bestämda sorteringen av funktionen.
Exempel
Här är ett enkelt exempel att visa:
SELECT NLS_UPPER('coffee time') AS Result
FROM DUAL;
Resultat:
RESULT ______________ COFFEE TIME
Detsamma gäller när argumentet använder blandade versaler:
SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;
Resultat:
RESULT ______________ COFFEE TIME
Och om argumentet redan är versaler, är resultatet detsamma som indata:
SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;
Resultat:
RESULT ______________ COFFEE TIME
Ange en sortering
Här är ett exempel som visar hur angivande av en sortering kan ändra resultaten:
SELECT
NLS_UPPER('fasilə') AS r1,
NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;
Resultat:
R1 R2 _________ _________ FASILƏ FASİLƏ
Lägg märke till att den andra kolumnen använder en prickad versal I
tecken, som följer det azerbajdzjanska skriftsystemet.
Observera att NLS_SORT
åsidosätter sammanställningen av det första argumentet endast vid tidpunkten för exekvering. Därför returnerar följande sats sammanställningen av det första argumentet, inte det andra:
SELECT
COLLATION(NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;
Resultat:
COLLATION _________________ USING_NLS_COMP
Ämnet för sammanställningar kan vara ganska komplext. Se bilaga C i Oracle Database Globalization Support Guide för regler för bestämning av sortering och regler för sorteringshärledning för denna funktion.
Nullvärden
Skickar null
returnerar null
:
SELECT
NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLS_UPPER('fasilə', null) AS r2,
NLS_UPPER(null, null) AS r3
FROM DUAL;
Resultat:
R1 R2 R3 _______ _______ _______ null null null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Inkorrekt antal argument
Anropar NLS_UPPER()
utan att skicka några argument returnerar ett fel:
SELECT NLS_UPPER()
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT NLS_UPPER() 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:
Och att skicka för många argument resulterar i ett fel:
SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time') FROM DUAL Error at Command Line : 1 Column : 55 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: