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: