W Oracle NLS_CHARSET_DECL_LEN()
funkcja zwraca długość deklaracji (w liczbie znaków) NCHAR
kolumna.
Składnia
Składnia wygląda tak:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Gdzie byte_count
to szerokość kolumny i char_set_id
to identyfikator zestawu znaków kolumny.
Przykład
Oto podstawowy przykład:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;
Wynik:
100
Tutaj jest z innym identyfikatorem zestawu znaków:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;
Wynik:
50
Pobierz identyfikator zestawu znaków
Możemy użyć NLS_CHARSET_ID()
funkcja zwracająca identyfikator zestawu znaków dla danego zestawu znaków:
Przykład:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL;
Wynik:
50
Argument zerowy
Jeśli jakikolwiek argument ma wartość null
, wynik to null
:
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;
Wynik:
R1 R2 _______ _______ null null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null
występuje w wyniku polecenia SQL SELECT
oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Nieprawidłowa liczba argumentów
Wywołanie funkcji bez przekazywania jakichkolwiek argumentów skutkuje błędem:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;
Wynik:
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:
Przekazywanie zbyt wielu argumentów również skutkuje błędem:
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;
Wynik:
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: