I Oracle er NLS_UPPER()
funktion returnerer sit argument med alle bogstaver med store bogstaver.
Det ligner UPPER()
funktion, bortset fra at den accepterer et andet argument, der giver dig mulighed for at angive sorteringen. Samlingen håndterer særlige sproglige krav til sagskonverteringer.
Syntaks
Syntaksen ser sådan ud:
NLS_UPPER(char [, 'nlsparam' ])
Hvor både char
og 'nlsparam'
kan være af enhver af datatyperne CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
eller NCLOB
.
'nlsparam'
argument kan have følgende form:
'NLS_SORT = sort'
Hvor sort
er en navngivet kollation.
Hvis du udelader dette argument, bruges den bestemte sammenstilling af funktionen.
Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT NLS_UPPER('coffee time') AS Result
FROM DUAL;
Resultat:
RESULT ______________ COFFEE TIME
Det samme gælder, når argumentet bruger blandet store og små bogstaver:
SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;
Resultat:
RESULT ______________ COFFEE TIME
Og hvis argumentet allerede er med store bogstaver, så er resultatet det samme som inputtet:
SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;
Resultat:
RESULT ______________ COFFEE TIME
Angiv en sortering
Her er et eksempel, der viser, hvordan angivelse af en sortering kan ændre resultaterne:
SELECT
NLS_UPPER('fasilə') AS r1,
NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;
Resultat:
R1 R2 _________ _________ FASILƏ FASİLƏ
Bemærk, at den anden kolonne bruger et prikket stort I
karakter, som overholder det aserbajdsjanske skriftsystem.
Bemærk, at NLS_SORT
tilsidesætter sammenstillingen af det første argument kun på tidspunktet for udførelsen. Derfor returnerer følgende sætning sammenstillingen af det første argument, ikke det andet:
SELECT
COLLATION(NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;
Resultat:
COLLATION _________________ USING_NLS_COMP
Emnet for sammenstillinger kan være ret komplekst. Se appendiks C i Oracle Database Globalization Support Guide for reglerne for sorteringsbestemmelse og regler for udledning af sortering for denne funktion.
Nul-værdier
Sender null
returnerer 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 returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Forkert antal argumenter
Kalder NLS_UPPER()
uden at sende nogen argumenter returnerer en fejl:
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:
Og at sende for mange argumenter resulterer i en fejl:
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: