sql >> Databáze >  >> RDS >> Oracle

Funkce TRANSLATE(… USING) v Oracle

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řevede char do znakové sady databáze. Výstupní datový typ je VARCHAR2 .
  • Určení USING NCHAR_CS argument převede char do národního znakového souboru. Výstupní datový typ je NVARCHAR2 .

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:

null

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT 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ězec null 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:

  1. Vyžaduje ODP.NET instalaci klienta Oracle?

  2. Odstraňte duplicitní řádky v MySQL

  3. Proč dostanu výjimku OutOfRange ve funkci GetOrdinal tohoto pole CLOB?

  4. Použijte COL_LENGTH() k získání délky sloupce na serveru SQL