In Oracle das TRANSLATE(...USING) Funktion konvertiert ihr Argument in den Zeichensatz, der für Konvertierungen zwischen dem Datenbankzeichensatz und dem nationalen Zeichensatz angegeben ist.
Diese Funktion darf nicht mit dem TRANSLATE() verwechselt werden Funktion, mit der Sie mehrere einzelne Zeichen eins zu eins in einem Vorgang ersetzen können.
Der TRANSLATE(...USING) Die Funktion wird in Oracle hauptsächlich aus Gründen der ANSI-Kompatibilität unterstützt. Oracle empfiehlt die Verwendung von TO_CHAR() und TO_NCHAR() funktioniert stattdessen.
Syntax
Die Syntax lautet wie folgt:
TRANSLATE ( char USING
{ CHAR_CS | NCHAR_CS }
)
Wobei char der umzuwandelnde Ausdruck ist und:
- Angabe des
USINGCHAR_CSArgument konvertiertcharin den Zeichensatz der Datenbank. Der Ausgabedatentyp istVARCHAR2. - Angabe des
USINGNCHAR_CSArgument konvertiertcharin den nationalen Zeichensatz. Der Ausgabedatentyp istNVARCHAR2.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT
TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL; Ergebnis:
CHAR_CS NCHAR_CS __________ ___________ Cat Cat
Um den Unterschied zu demonstrieren, passiert Folgendes, wenn wir es an DUMP() übergeben Funktion:
SELECT
DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL; Ergebnis:
CHAR_CS NCHAR_CS _____________________ ______________________________ Typ=1 Len=3: C,a,t Typ=1 Len=6: ^@,C,^@,a,^@,t
Null-Argumente
Übergabe von null da das Argument null zurückgibt :
SET NULL 'null';
SELECT
TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL; Ergebnis:
null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.
Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.
Fehlendes Argument
Aufruf der Funktion mit ohne Übergabe des char Argument führt zu einem Fehler:
SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL; Ergebnis:
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: