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: