I Oracle, NLS_CHARSET_DECL_LEN() funktion returnerar deklarationslängden (i antal tecken) för en NCHAR kolumn.
Syntax
Syntaxen ser ut så här:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Där byte_count är bredden på kolumnen och char_set_id är teckenuppsättningens ID för kolumnen.
Exempel
Här är ett grundläggande exempel:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL; Resultat:
100
Här är den med ett annat teckenuppsättnings-ID:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL; Resultat:
50
Hämta teckenuppsättnings-ID
Vi kan använda NLS_CHARSET_ID() funktion för att returnera teckenuppsättnings-ID för en given teckenuppsättning:
Exempel:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL; Resultat:
50
Nollargument
Om något argument är null , resultatet är 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 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
Att anropa funktionen utan att skicka några argument resulterar i ett fel:
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:
Och att skicka för många argument resulterar också i ett fel:
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: