I Oracle er NLS_CHARSET_DECL_LEN()
funktion returnerer deklarationslængden (i antal tegn) af en NCHAR
kolonne.
Syntaks
Syntaksen ser sådan ud:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Hvor byte_count
er bredden af kolonnen og char_set_id
er kolonnens tegnsæt-id.
Eksempel
Her er et grundlæggende eksempel:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;
Resultat:
100
Her er det med et andet tegnsæt-id:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;
Resultat:
50
Hent tegnsæt-id'et
Vi kan bruge NLS_CHARSET_ID()
funktion til at returnere tegnsæt-id'et for et givet tegnsæt:
Eksempel:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL;
Resultat:
50
Nul-argument
Hvis et argument er null
, resultatet er null
:
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;
Resultat:
R1 R2 _______ _______ 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
Kaldning af funktionen uden at sende nogen argumenter resulterer i en fejl:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;
Resultat:
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:
Og at sende for mange argumenter resulterer også i en fejl:
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;
Resultat:
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: