Trong Cơ sở dữ liệu Oracle, COMPOSE()
hàm trả về kết quả của việc áp dụng thành phần chuẩn Unicode, như được mô tả trong định nghĩa Chuẩn Unicode D117, cho đối số chuỗi của nó.
Nó đối lập với DECOMPOSE()
chức năng.
Cú pháp
Cú pháp như sau:
COMPOSE(char)
Ở đâu char
là một trong CHAR
, VARCHAR2
, NCHAR
hoặc NVARCHAR2
kiểu dữ liệu.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT
COMPOSE('a' || UNISTR('\0303'))
FROM DUAL;
Kết quả:
ã
Các ký tự không phải Unicode
Nếu bộ ký tự của đối số không phải là một trong các bộ ký tự Unicode, thì đối số được trả về không được sửa đổi.
Ví dụ:
SELECT COMPOSE( 'a' )
FROM DUAL;
Kết quả:
a
Đối số rỗng
Nếu đối số là null
, kết quả là null
:
SET NULL 'null';
SELECT COMPOSE(null)
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 giá trị 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.
Số lượng đối số không hợp lệ
Gọi COMPOSE()
mà không có bất kỳ đối số nào dẫn đến lỗi:
SELECT COMPOSE()
FROM DUAL;
Kết quả:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Và việc chuyển quá nhiều đối số cũng dẫn đến lỗi:
SELECT COMPOSE('a', 'b')
FROM DUAL;
Kết quả:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"