Oracle
 sql >> Baza danych >  >> RDS >> Oracle

TRANSLATE(… UŻYWAJĄC) Funkcja w Oracle

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 konwertuje char do zestawu znaków bazy danych. Typ danych wyjściowych to VARCHAR2 .
  • Określanie USING NCHAR_CS argument konwertuje char do zestawu znaków narodowych. Typ danych wyjściowych to NVARCHAR2 .

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie wyzwalacza, który będzie uruchamiany tylko wtedy, gdy tworzona jest nowa tabela

  2. Funkcja CHARTOROWID() w Oracle

  3. Jak używać kursora referencji Oracle z języka C# ODP.NET jako parametru ReturnValue bez użycia funkcji lub procedury przechowywanej?

  4. Połącz ponownie infrastrukturę sieciową

  5. java.lang.ClassCastException:oracle.sql.TIMESTAMP nie może być rzutowany na java.sql.Timestamp