W Oracle TRANSLATE(...USING)
funkcja konwertuje swój argument na zestaw znaków określony dla konwersji między zestawem znaków bazy danych a zestawem znaków narodowych.
Tej funkcji nie należy mylić z TRANSLATE()
funkcja, która umożliwia wykonanie kilku jednoznakowych podmian jeden do jednego w jednej operacji.
TRANSLATE(...USING)
funkcja jest obsługiwana w Oracle głównie dla zgodności z ANSI. Oracle zaleca użycie TO_CHAR()
i TO_NCHAR()
funkcje zamiast tego.
Składnia
Składnia wygląda tak:
TRANSLATE ( char USING
{ CHAR_CS | NCHAR_CS }
)
Gdzie char
jest wyrażeniem do przekonwertowania i:
- Określanie
USING
CHAR_CS
argument konwertujechar
do zestawu znaków bazy danych. Typ danych wyjściowych toVARCHAR2
. - Określanie
USING
NCHAR_CS
argument konwertujechar
do zestawu znaków narodowych. Typ danych wyjściowych toNVARCHAR2
.
Przykład
Oto podstawowy przykład:
SELECT
TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;
Wynik:
CHAR_CS NCHAR_CS __________ ___________ Cat Cat
Aby zademonstrować różnicę, oto co się dzieje, gdy przekazujemy ją do DUMP()
funkcja:
SELECT
DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;
Wynik:
CHAR_CS NCHAR_CS _____________________ ______________________________ Typ=1 Len=3: C,a,t Typ=1 Len=6: ^@,C,^@,a,^@,t
Argumenty zerowe
Przekazywanie null
jako argument zwraca null
:
SET NULL 'null';
SELECT
TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL;
Wynik:
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ć.
Brakujący argument
Wywołanie funkcji with bez przekazywania char
argument powoduje błąd:
SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT TRANSLATE(USING CHAR_CS) 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: