Hàm DECODE – Oracle/PLSQL
Hàm DECODE – Oracle/PLSQL là một trong các hàm trong danh sách được cung cấp sẵn cho người sử dụng khi thao tác với hệ quản trị cơ sở dữ liệu Oracle.
Hàm DECODE – Oracle/PLSQL – Chức năng
Hàm Oracle/PLSQL DECODE dùng để hỗ trợ tính năng câu lệnh IF-THEN-ELSE hay CASE mà bạn quen thuộc trong các ngôn ngữ lập trình như CSharp, Java, Visual Basic, Javascrip,….
Hàm DECODE – Oracle/PLSQL – Cú pháp
Cú pháp Hàm DECODE trong Oracle/PLSQL như sau :
1 |
DECODE( expression , search , result [, search , result]... [, default] ) |
Tham số
- expression
- Biểu thức để so sánh.
- search
- Giá trị để so sánh với biểu thức.
- result
- Giá trị sẽ trả về nều biểu thức khớp với giá trị so sánh.
- default
- Tùy chọn. Đây là giá trị mà có thể trả về mặc định khi biểu thức và giá trị so sánh không khớp nhau. Vời default là tham số tùy chọn vì vậy hàm DECODE sẽ trả vê giá trị null nếu biểu thức không khớp với giá trị so sánh.
Hàm DECODE – Oracle/PLSQL – Phạm vi
Hàm DECODE có thể sẵn sàng sử dụng trong Oracle/PLSQL với các phiên bản Oracle như sau:
1 |
Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i |
Hàm DECODE – Oracle/PLSQL – Ví dụ
Dưới đây là các ví dụ minh họa cách sử dụng hàm DECODE trong Oracle/PLSQL như sau:
1 2 3 4 5 6 |
SELECT supplier_name, DECODE(supplier_id, 10000, 'IBM', 10001, 'Microsoft', 10002, 'Hewlett Packard', 'Gateway') result FROM suppliers; |
Cách sử dụng hàm DECODE ở trên tương đương với bạn viết câu lệnh IF-THEN-ELSE như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
IF supplier_id = 10000 THEN result := 'IBM'; ELSIF supplier_id = 10001 THEN result := 'Microsoft'; ELSIF supplier_id = 10002 THEN result := 'Hewlett Packard'; ELSE result := 'Gateway'; END IF; |
Đặc điểm hay của hàm DECODE có thể hỗ trợ so sánh một biết thức với nhiều giá trị khác nhau, giúp cho các câu lệnh PL/SQL của bạn gọn gàng hơn.
Tham khảo các hàm built-in trong Oracle/PLSQL khác
STT | Tên hàm | Phạm vi | Chi tiết |
---|---|---|---|
1 | ABS | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
2 | ACOS | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
3 | ADD_MONTHS | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
4 | ASCII | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
5 | ASCIISTR | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
6 | ASIN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
7 | ATAN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
8 | ATAN2 | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
9 | AVG | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
10 | BFILENAME | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
11 | BIN_TO_NUM | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
12 | BITAND | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
13 | CARDINALITY | Oracle 12c, Oracle 11g, Oracle 10g | xem |
14 | CASE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
15 | CEIL | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
16 | CHR | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
17 | COALESCE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
18 | CONCAT | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
19 | Concat with || | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
20 | CORR | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
21 | COS | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
22 | COSH | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
23 | COVAR_POP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
24 | COVAR_SAMP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
25 | CUME_DIST | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
26 | CURRENT_DATE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
27 | CURRENT_TIMESTAMP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
28 | DBTIMEZONE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
29 | DECODE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
30 | DECOMPOSE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
31 | DENSE_RANK | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
32 | DUMP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
33 | EMPTY_BLOB | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
34 | EMPTY_CLOB | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
35 | EXP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
36 | EXTRACT | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
37 | FIRST_VALUE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
38 | FLOOR | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
39 | FROM_TZ | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
40 | GREATEST | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
41 | GROUP_ID | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
42 | HEXTORAW | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
43 | INITCAP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
44 | INSTR | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
45 | INSTR2 | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
46 | INSTR4 | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
47 | INSTRB | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
48 | INSTRC | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
49 | LAG | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
50 | LAST_DAY | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
51 | LAST_VALUE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
52 | LEAD | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
53 | LEAST | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
54 | LENGTH | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
55 | LENGTH2 | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
56 | LENGTH4 | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
57 | LENGTHB | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
58 | LENGTHC | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
59 | LISTAGG | Oracle 12c, Oracle 11g Release 2 | xem |
60 | LN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
61 | LOCALTIMESTAMP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
62 | LOG | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
63 | LOWER | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
64 | LPAD | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
65 | LTRIM | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
66 | MAX | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
67 | MEDIAN | Oracle 12c, Oracle 11g, Oracle 10g | xem |
68 | MIN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
69 | MONTHS_BETWEEN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
70 | NANVL | Oracle 12c, Oracle 11g, Oracle 10g | xem |
71 | NEW_TIME | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
72 | NEXT_DAY | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
73 | NTH_VALUE | Oracle 12c, Oracle 11g Release 2 | xem |
74 | NULLIF | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
75 | NUMTODSINTERVAL | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
76 | NUMTOYMINTERVAL | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
77 | NVL | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
78 | NVL2 | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
79 | POWER | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
80 | RANK | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
81 | REGEXP_COUNT | Oracle 12c, Oracle 11g | xem |
82 | REGEXP_INSTR | Oracle 12c, Oracle 11g, Oracle 10g | xem |
83 | REGEXP_REPLACE | Oracle 12c, Oracle 11g, Oracle 10g | xem |
84 | REGEXP_SUBSTR | Oracle 12c, Oracle 11g, Oracle 10g | xem |
85 | REPLACE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
86 | ROUND (numbers) | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
87 | ROWNUM | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
88 | RPAD | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
89 | RTRIM | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
90 | SESSIONTIMEZONE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
91 | SIGN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
92 | SIN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
93 | SINH | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
94 | SQRT | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
95 | STDDEV | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
96 | SUBSTR | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
97 | SUM | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
98 | SYSDATE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
99 | SYSTIMESTAMP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
100 | TAN | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
101 | TANH | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
102 | TO_CHAR | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
103 | TO_CLOB | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
104 | TO_DATE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
105 | TO_DSINTERVAL | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
106 | TO_LOB | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
107 | TO_MULTI_BYTE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
108 | TO_NCLOB | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
109 | TO_NUMBER | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
110 | TO_SINGLE_BYTE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
111 | TO_TIMESTAMP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
112 | TO_TIMESTAMP_TZ | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
113 | TO_YMINTERVAL | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i | xem |
114 | TRANSLATE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
115 | TRIM | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
116 | TRUNC (dates) | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
117 | TRUNC (numbers) | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
118 | UID | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
119 | UPPER | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
120 | USER | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
121 | USERENV | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
122 | VAR_POP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
123 | VAR_SAMP | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
124 | VARIANCE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
125 | VSIZE | Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i | xem |
Blog được lập ra với mục đích để chia sẻ đề thi tới toàn bộ học sinh, sinh viên ở Việt Nam. Trong quá trình đăng bài không thể tránh được những sai sót, Nếu các bạn phát hiện ra sai sót có thể comment ở bên dưới hoặc có đề hay muốn chia sẻ tới tất cả mọi người có thể gửi thông tin vào email [email protected]
Mít&Béo