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
USINGCHAR_CSargument konwertujechardo zestawu znaków bazy danych. Typ danych wyjściowych toVARCHAR2. - Określanie
USINGNCHAR_CSargument konwertujechardo 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: