Trong Oracle, TRANSLATE(...USING)
hàm chuyển đổi đối số của nó thành bộ ký tự được chỉ định cho các chuyển đổi giữa bộ ký tự cơ sở dữ liệu và bộ ký tự quốc gia.
Không nên nhầm lẫn hàm này với TRANSLATE()
, cho phép bạn thực hiện nhiều ký tự thay thế một-một trong một thao tác.
TRANSLATE(...USING)
chức năng được hỗ trợ trong Oracle chủ yếu để tương thích ANSI. Oracle khuyến nghị chúng tôi sử dụng TO_CHAR()
và TO_NCHAR()
thay vào đó là các chức năng.
Cú pháp
Cú pháp như sau:
TRANSLATE ( char USING
{ CHAR_CS | NCHAR_CS }
)
Ở đâu char
là biểu thức được chuyển đổi và:
- Chỉ định
USING
CHAR_CS
đối số chuyển đổichar
vào bộ ký tự cơ sở dữ liệu. Kiểu dữ liệu đầu ra làVARCHAR2
. - Chỉ định
USING
NCHAR_CS
đối số chuyển đổichar
thành bộ chữ quốc ngữ. Kiểu dữ liệu đầu ra làNVARCHAR2
.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT
TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;
Kết quả:
CHAR_CS NCHAR_CS __________ ___________ Cat Cat
Để chứng minh sự khác biệt, đây là những gì sẽ xảy ra khi chúng tôi chuyển nó vào DUMP()
chức năng:
SELECT
DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;
Kết quả:
CHAR_CS NCHAR_CS _____________________ ______________________________ Typ=1 Len=3: C,a,t Typ=1 Len=6: ^@,C,^@,a,^@,t
Đối số rỗng
Chuyển null
khi đối số trả về null
:
SET NULL 'null';
SELECT
TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL;
Kết quả:
null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null
xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Thiếu đối số
Gọi hàm với mà không chuyển char
đối số dẫn đến lỗi:
SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL;
Kết quả:
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: