Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm DECOMPOSE () trong Oracle

Trong Cơ sở dữ liệu Oracle, DECOMPOSE() hàm trả về kết quả của việc áp dụng một trong các phép phân tách Unicode cho đối số chuỗi của nó. Sự phân tách được xác định bởi đối số thứ hai (tùy chọn).

Nó đối lập với COMPOSE() chức năng.

Cú pháp

Cú pháp như sau:

DECOMPOSE( string [, { 'CANONICAL' | 'COMPATIBILITY' } ] )

Trong đó cả hai đối số có thể là bất kỳ CHAR nào , VARCHAR2 , NCHAR hoặc NVARCHAR2 kiểu dữ liệu hoặc kiểu có thể được chuyển đổi hoàn toàn thành VARCHAR2 hoặc NVARCHAR2 .

Về đối số thứ hai (tùy chọn):

  • CANONICAL dẫn đến sự phân tách hợp quy, như được mô tả trong định nghĩa Tiêu chuẩn Unicode D68 và trả về một chuỗi ở dạng chuẩn hóa NFD.
  • COMPATIBILITY dẫn đến phân rã khả năng tương thích, như được mô tả trong định nghĩa Tiêu chuẩn Unicode D65 và trả về một chuỗi ở dạng chuẩn hóa NFKD.

Hành vi mặc định là áp dụng phân tách hợp quy.

Ví dụ

Đây là một ví dụ:

SELECT DECOMPOSE('ã') FROM DUAL;

Kết quả:

Tuy nhiên, ví dụ sau là một minh chứng tốt hơn:

SELECT ASCIISTR(DECOMPOSE('ã')) FROM DUAL;

Kết quả:

a\0303

Ở đây, chúng tôi đã sử dụng ASCIISTR() để trả về phiên bản ASCII của kết quả DECOMPOSE() trong bộ ký tự cơ sở dữ liệu.

Đây là những gì sẽ xảy ra nếu chúng tôi sử dụng ASCIISTR() không có DECOMPOSE() :

SELECT ASCIISTR('ã') FROM DUAL;

Kết quả:

\00E3

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 ASCIISTR(DECOMPOSE('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 DECOMPOSE(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ệ

Đang gọi DECOMPOSE() mà không có bất kỳ đối số nào dẫn đến lỗi:

SELECT DECOMPOSE()
FROM DUAL;

Kết quả:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

Và việc chuyển quá nhiều đối số cũng dẫn đến lỗi:

SELECT DECOMPOSE('a', 'b')
FROM DUAL;

Kết quả:

Error report -
ORA-12702: invalid NLS parameter string used in SQL function

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngữ nghĩa của ResultSet # getDate ()

  2. Truyền một mảng dữ liệu làm tham số đầu vào cho một thủ tục Oracle

  3. SQL:Nhận các bản ghi được tạo trong phạm vi thời gian cho các ngày cụ thể

  4. Hàm TZ_OFFSET () trong Oracle

  5. Cách định dạng số bằng dấu trừ / dấu cộng trong Oracle