In Oracle, il NLS_CHARSET_DECL_LEN()
La funzione restituisce la lunghezza della dichiarazione (in numero di caratteri) di un NCHAR
colonna.
Sintassi
La sintassi è questa:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Dove byte_count
è la larghezza della colonna e char_set_id
è l'ID del set di caratteri della colonna.
Esempio
Ecco un esempio di base:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;
Risultato:
100
Eccolo con un ID set di caratteri diverso:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;
Risultato:
50
Ottieni l'ID del set di caratteri
Possiamo usare il NLS_CHARSET_ID()
funzione per restituire l'ID del set di caratteri per un determinato set di caratteri:
Esempio:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL;
Risultato:
50
Argomento nullo
Se un argomento è null
, il risultato è null
:
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;
Risultato:
R1 R2 _______ _______ null null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null
si verifica come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi utilizzare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Conteggio argomenti errato
La chiamata della funzione senza passare alcun argomento genera un errore:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;
Risultato:
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:
E anche il passaggio di troppi argomenti provoca un errore:
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;
Risultato:
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: