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
. specificerenCHAR_CS
argument converteertchar
in de database-tekenset. Het uitvoergegevenstype isVARCHAR2
. - De
USING
. specificerenNCHAR_CS
argument converteertchar
in de nationale karakterset. Het uitvoergegevenstype isNVARCHAR2
.
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: