sql >> Database >  >> RDS >> Oracle

VERTALEN (... GEBRUIKEN) Functie in Oracle

In Oracle, de TRANSLATE(...USING) functie converteert zijn argument naar de tekenset die is gespecificeerd voor conversies tussen de databasetekenset en de nationale tekenset.

Deze functie moet niet worden verward met de TRANSLATE() functie, waarmee u in één bewerking meerdere één-op-één-substituties van één teken kunt maken.

De TRANSLATE(...USING) functie wordt in Oracle voornamelijk ondersteund voor ANSI-compatibiliteit. Oracle raadt aan dat we de TO_CHAR() . gebruiken en TO_NCHAR() functies in plaats daarvan.

Syntaxis

De syntaxis gaat als volgt:

TRANSLATE ( char USING
          { CHAR_CS | NCHAR_CS }
          )

Waar char is de uitdrukking die moet worden geconverteerd, en:

  • De USING . specificeren CHAR_CS argument converteert char in de database-tekenset. Het uitvoergegevenstype is VARCHAR2 .
  • De USING . specificeren NCHAR_CS argument converteert char in de nationale karakterset. Het uitvoergegevenstype is NVARCHAR2 .

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT 
    TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
    TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;

Resultaat:

   CHAR_CS    NCHAR_CS 
__________ ___________ 
Cat        Cat        

Om het verschil te demonstreren, is dit wat er gebeurt als we het doorgeven aan de DUMP() functie:

SELECT 
    DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
    DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;

Resultaat:

              CHAR_CS                       NCHAR_CS 
_____________________ ______________________________ 
Typ=1 Len=3: C,a,t    Typ=1 Len=6: ^@,C,^@,a,^@,t   

Nullargumenten

Doorgeven van null als het argument null teruggeeft :

SET NULL 'null';
SELECT 
    TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL;

Resultaat:

null

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Ontbrekend argument

De functie aanroepen met zonder de char . door te geven argument resulteert in een fout:

SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL;

Resultaat:

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. Top 30 SQL Query-interviewvragen die u moet oefenen in 2022

  2. Hoe u efficiënt de dichtstbijzijnde locaties in de buurt van een bepaalde locatie kunt vinden?

  3. Reconstrueer stand-by DB

  4. Kan geen verbinding maken met MySQL 4.1+ met oude authenticatie