В Oracle, TRANSLATE(...USING)
функцията преобразува своя аргумент в набора от знаци, определен за преобразувания между набора от знаци на базата данни и националния набор от знаци.
Тази функция не трябва да се бърка с TRANSLATE()
функция, която ви позволява да направите няколко едносимволни замествания един към един в една операция.
TRANSLATE(...USING)
функцията се поддържа в Oracle предимно за съвместимост с ANSI. Oracle препоръчва да използваме TO_CHAR()
и TO_NCHAR()
функции вместо това.
Синтаксис
Синтаксисът е така:
TRANSLATE ( char USING
{ CHAR_CS | NCHAR_CS }
)
Където char
е изразът, който трябва да се преобразува, и:
- Указване на
USING
CHAR_CS
аргумент преобразуваchar
в набора от знаци на базата данни. Типът на изходните данни еVARCHAR2
. - Указване на
USING
NCHAR_CS
аргумент преобразуваchar
в националния набор от характери. Типът на изходните данни еNVARCHAR2
.
Пример
Ето един основен пример:
SELECT
TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;
Резултат:
CHAR_CS NCHAR_CS __________ ___________ Cat Cat
За да демонстрираме разликата, ето какво се случва, когато го предадем на DUMP()
функция:
SELECT
DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;
Резултат:
CHAR_CS NCHAR_CS _____________________ ______________________________ Typ=1 Len=3: C,a,t Typ=1 Len=6: ^@,C,^@,a,^@,t
Нулеви аргументи
Предаването на null
тъй като аргументът връща null
:
SET NULL 'null';
SELECT
TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL;
Резултат:
null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Липсващ аргумент
Извикване на функцията с без подаване на char
аргумент води до грешка:
SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL;
Резултат:
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: