In Oracle, de NLS_CHARSET_DECL_LEN()
functie retourneert de declaratielengte (in aantal tekens) van een NCHAR
kolom.
Syntaxis
De syntaxis gaat als volgt:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Waar byte_count
is de breedte van de kolom en char_set_id
is de tekenset-ID van de kolom.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;
Resultaat:
100
Hier is het met een andere tekenset-ID:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;
Resultaat:
50
De tekenset-ID ophalen
We kunnen de NLS_CHARSET_ID()
. gebruiken functie om de tekenset-ID voor een bepaalde tekenset te retourneren:
Voorbeeld:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL;
Resultaat:
50
Nullargument
Als een argument null
is , het resultaat is null
:
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;
Resultaat:
R1 R2 _______ _______ null null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Onjuist aantal argumenten
Het aanroepen van de functie zonder het doorgeven van argumenten resulteert in een fout:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
En het doorgeven van te veel argumenten resulteert ook in een fout:
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN(100, 1, 2) FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: