I Oracle, TRANSLATE(...USING)
funktion konverterar sitt argument till den teckenuppsättning som anges för konverteringar mellan databasens teckenuppsättning och den nationella teckenuppsättningen.
Denna funktion ska inte förväxlas med den TRANSLATE()
funktion, som låter dig göra flera en-till-en-ersättningar med ett tecken i en operation.
TRANSLATE(...USING)
Funktionen stöds i Oracle främst för ANSI-kompatibilitet. Oracle rekommenderar att vi använder TO_CHAR()
och TO_NCHAR()
fungerar istället.
Syntax
Syntaxen ser ut så här:
TRANSLATE ( char USING
{ CHAR_CS | NCHAR_CS }
)
Där char
är uttrycket som ska konverteras och:
- Ange koden
USING
CHAR_CS
argument konverterarchar
i databasens teckenuppsättning. Utdatatypen ärVARCHAR2
. - Ange koden
USING
NCHAR_CS
argument konverterarchar
in i den nationella karaktärsuppsättningen. Utdatatypen ärNVARCHAR2
.
Exempel
Här är ett grundläggande exempel:
SELECT
TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;
Resultat:
CHAR_CS NCHAR_CS __________ ___________ Cat Cat
För att visa skillnaden, här är vad som händer när vi skickar den till DUMP()
funktion:
SELECT
DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;
Resultat:
CHAR_CS NCHAR_CS _____________________ ______________________________ Typ=1 Len=3: C,a,t Typ=1 Len=6: ^@,C,^@,a,^@,t
Nollargument
Skickar null
eftersom argumentet returnerar null
:
SET NULL 'null';
SELECT
TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL;
Resultat:
null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Argument saknas
Anropa funktionen utan att skicka char
argument resulterar i ett fel:
SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL;
Resultat:
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: