V Oracle TRANSLATE(...USING)
funkce převede svůj argument na znakovou sadu určenou pro převody mezi znakovou sadou databáze a národní znakovou sadou.
Tuto funkci nezaměňujte s funkcí TRANSLATE()
funkce, která vám umožňuje provést několik jednoznakových, jednoznakových substitucí v jedné operaci.
TRANSLATE(...USING)
Funkce je v Oracle podporována především kvůli kompatibilitě ANSI. Oracle doporučuje, abychom používali TO_CHAR()
a TO_NCHAR()
funkce.
Syntaxe
Syntaxe vypadá takto:
TRANSLATE ( char USING
{ CHAR_CS | NCHAR_CS }
)
Kde char
je výraz, který má být převeden, a:
- Určení
USING
CHAR_CS
argument převedechar
do znakové sady databáze. Výstupní datový typ jeVARCHAR2
. - Určení
USING
NCHAR_CS
argument převedechar
do národního znakového souboru. Výstupní datový typ jeNVARCHAR2
.
Příklad
Zde je základní příklad:
SELECT
TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;
Výsledek:
CHAR_CS NCHAR_CS __________ ___________ Cat Cat
Abychom demonstrovali rozdíl, zde je to, co se stane, když jej předáme do DUMP()
funkce:
SELECT
DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;
Výsledek:
CHAR_CS NCHAR_CS ______________________ ______________________________ Typ=1 Len=3:C,a,t Typ=1 Len=6:^@,C,^@,a,^@Nulové argumenty
Předávání
null
jako argument vracínull
:SET NULL 'null'; SELECT TRANSLATE(null USING CHAR_CS) AS Result FROM DUAL;
Výsledek:
nullVe výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když
null
dochází v důsledku SQLSELECT
prohlášení.Můžete však použít
SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězecnull
by měl být vrácen.Chybí argument
Volání funkce pomocí bez předání
char
argument má za následek chybu:SELECT TRANSLATE(USING CHAR_CS) FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT TRANSLATE(USING CHAR_CS)FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -SQL Chyba:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce: