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

Cách sử dụng Giải mã trong Oracle

Giới thiệu về giải mã sql Oracle

Trong phần này, chúng ta sẽ thảo luận về xử lý giải mã Oracle, một khía cạnh rất quan trọng của câu lệnh sql Oracle

Oracle decode là phương pháp trong cơ sở dữ liệu Oracle để chuyển đổi các giá trị dữ liệu từ giá trị này sang giá trị khác, dễ hiểu hơn. Giải mã Oracle chuyển đổi các giá trị dữ liệu tại thời điểm truy xuất.

Đây là một loại Nếu thì khác để xử lý

Khối mã cho Giải mã sql Oracle bên dưới

giải mã (tên biểu thức hoặc cột, đối sánh, kết quả [, đối sánh, kết quả]… [, mặc định])

Dưới đây là ý nghĩa của các thuật ngữ trong đoạn mã trên
a) biểu thức hoặc cột là giá trị để so sánh
b) đối sánh là giá trị được so sánh với biểu thức
c) kết quả là giá trị được trả về, nếu biểu thức bằng so khớp
d) mặc định là tùy chọn. Nếu không tìm thấy kết quả phù hợp nào, bộ giải mã sẽ trả về mặc định. Nếu mặc định bị bỏ qua, thì câu lệnh giải mã sẽ trả về NULL (không tìm thấy kết quả phù hợp nào).

Ví dụ

select
decode (
Mã giai đoạn,
'P', 'Đang chờ xử lý',
'C', 'Đã hoàn thành',
'T', ' Đã chấm dứt ',
' S ',' Chế độ chờ ',
' CHƯA BIẾT '
)
khỏi
FND_REQUESTS;

Đây là thuật toán để hiểu rõ hơn về nó

1) Oracle truy xuất giá trị cột của mã Giai đoạn
2) nếu Mã giai đoạn ='P' thì Đang chờ xử lý
3) nếu Mã giai đoạn ='C' thì Đã hoàn thành
4) nếu Mã giai đoạn ='T' rồi đến Kết thúc
5) nếu mã Pha ='S' thì ở Chế độ chờ
6) Nếu mã Pha không phải là mã ở trên, bộ giải mã trả về Không xác định
7) Nếu không có mã mặc định nó sẽ cho giá trị rỗng

Lưu ý rằng giải mã Oracle bắt đầu bằng cách chỉ định tên cột hoặc biểu thức, sau đó là tập hợp các cặp giá trị biến đổi được so khớp. Ở cuối câu lệnh giải mã, chúng tôi tìm thấy một giá trị mặc định. Giá trị mặc định cho giải mã những gì sẽ hiển thị nếu giá trị cột không có trong danh sách được ghép nối.

Chúng ta có thể nói thuật toán như thế này

if (expr ==search1)
return (result1);
elseif (expr ==search2)
return ( result2);
… elseif (expr ==searchn)
return (resultn);
else
return (mặc định);

Một số điểm khác cần nhớ cho Giải mã Oracle

1) Trong một hàm DECODE, Oracle coi hai giá trị null là tương đương. Nếu expr là null, thì Oracle trả về kết quả của lần tìm kiếm đầu tiên cũng là null.

SQL> Giải mã SELECT (null, null, 1,0) FROM kép;
DECODE (NULL, NULL, 1,0)
———————
1

2) Số thành phần tối đa trong hàm DECODE, bao gồm expr, tìm kiếm, kết quả và mặc định, là 255.

3) Oracle tự động chuyển đổi các giá trị cho biểu thức và giá trị so sánh thành kiểu dữ liệu của giá trị so sánh đầu tiên. Ngoài ra, kiểu dữ liệu của giá trị trả về được chuyển đổi thành kiểu dữ liệu của giá trị trả về đầu tiên. Nếu kết quả đầu tiên có kiểu dữ liệu CHAR hoặc nếu kết quả đầu tiên là rỗng, thì Oracle sẽ chuyển đổi giá trị trả về thành kiểu dữ liệu VARCHAR2

Cách đọc giải mã trong Oracle

chúng ta có thể đọc câu lệnh giải mã như câu lệnh if-else if. Đối số đầu tiên trong câu lệnh giải mã nói chung sẽ là một số cột cần chuyển đổi dữ liệu. Đối số sau đó sẽ so sánh các giá trị của đối số đầu tiên với nó

Câu hỏi thường gặp về xử lý Giải mã sql Oracle

(1) Chúng tôi thấy rằng “expr” được tương đương với các giá trị được chỉ định, Chúng tôi có thể sử dụng các toán tử bất đẳng thức như> hoặc

Hãy lấy một ví dụ
SELECT DECODE (lương, <50000, sal + 1000, sal + 500) Final_salary FROM emp;
ERROR ở dòng 2
ORA-00936:thiếu biểu thức
Vì vậy, chúng tôi không thể sử dụng điều đó. Chúng ta cần sử dụng một câu lệnh tình huống để làm điều đó. hoặc chúng ta có thể đăng nhập hàm trong giải mã để đạt được nó
CHỌN DECODE (ký hiệu (lương- 50000), -1, sal + 1000, sal + 500) Final_salary FROM emp;
Về cơ bản, chúng ta cần chuyển đổi yêu cầu đối với một số công thức có thể đánh giá một số giá trị

(2) Làm thế nào để so sánh hai giá trị cột bằng cách sử dụng giải mã tiên tri?

SELECT col1, col2 decode (abs (col1-col2), 0, ‘col1 =col2’, Col1-col2, ‘col1> col2 ′,’ col1 FROM example_tab;

(3) Sự khác biệt giữa Giải mã và CASE

CASE có thể hoạt động như một cấu trúc PL / SQL nhưng DECODE chỉ được sử dụng trong các câu lệnh SQL. nhất quán, DECODE không
DECODE chỉ có thể hoạt động với các giá trị vô hướng nhưng CASE có thể hoạt động với các toán tử logic, vị từ và các truy vấn con có thể tìm kiếm.

(4) Giải mã tiên tri có giới hạn không

Có Số thành phần tối đa trong hàm DECODE, bao gồm expr, tìm kiếm, kết quả và mặc định, là 255.

Các liên kết có liên quan
Tài liệu Oracle về giải mã
cách viết truy vấn sql
Câu lệnh Sql cơ bản
Giải thích câu lệnh trường hợp Oracle kèm theo các mẹo và ví dụ
Hướng dẫn SQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle cách xuất truy vấn sang tệp văn bản / csv

  2. Làm cách nào để tắt hết hạn mật khẩu Oracle?

  3. Làm thế nào tôi có thể chọn hồ sơ CHỈ từ ngày hôm qua?

  4. RMAN Các lệnh sao lưu

  5. Kết nối CSDL Oracle TLS1.2 / SSL sử dụng JDBC thin và JKS