Các function trong Oracle
Các function trong Oracle
Hôm nay tôi dành một ít thời gian nghiên cứu các built-in functions, tức là các function có sẵn trong Oracle, mục tiêu là tương lai tôi có thể xử lý công việc lập trình trên cả SQL Server lẫn Oralce.
Trong Oracle, tôi khám phá được các function sau, kèm theo là ví dụ:
SUBSTR: lấy một đoạn ký tự con trong một chuỗi
Kết quả trả về sẽ là m
CHR: ta có thể sử dụng hàm này để chèn một ký tự xuống dòng vào
CONCAT(string1, string2): nối chuỗi
INITCAP: hàm này vô cùng hữu dụng, ví dụ ta có một chuỗi và ta muốn viết hoa ký tự đầu của mỗi từ, những ký tự còn lại viết thường
INSTR: tìm vị trí nơi một chuỗi con bắt đầu trong 1 chuỗi cha
Kết quả trả về sẽ là Start [7]
LPAD(output_string, output_length, padding_character): cho phép ta thêm một ký tự một hay nhiều lần vào vị trí đầu của một chuỗi
Hàm Decode này thực thi tương tự như cấu trúc if-then-else and if-then-else-if-then-else trong SQL
CÁC HÀM VỀ XỬ LÝ SỐ
CEIL: hàm này cho phép ta làm tròn số với giá trị tiếp theo lớn hơn giá trị hiện tại
Kết quả sẽ là Ceiling [5]
MODE: lấy phần dư của một phép chia
REMAINDER: lấy phần dư của một phép chia, giống hàm MODE, nhưng hàm này có 1 chút khác biệt, chạy ví dụ sau đây sẽ rõ.
POWER: hàm này là tính lũy thừa của 1 số
Kết quả sẻ là 81, vì là 3*3*3*3=81
FLOOR: cắt đi phần thập phân của một số, giữ lại phần nguyên
Trong Oracle, tôi khám phá được các function sau, kèm theo là ví dụ:
SUBSTR: lấy một đoạn ký tự con trong một chuỗi
1
2
3
4
5
| DECLARE r VARCHAR2(50):= 'mai quang vinh' ; BEGIN dbms_output.put_line(SUBSTR(r, 1, 1)); END ; |
Kết quả trả về sẽ là m
CHR: ta có thể sử dụng hàm này để chèn một ký tự xuống dòng vào
1
2
3
4
5
6
| DECLARE text1 VARCHAR2(10) := 'Title' ; text2 VARCHAR2(10) := 'Content' ; BEGIN dbms_output.put_line(text1||CHR(10)||text2); END ; |
CONCAT(string1, string2): nối chuỗi
1
2
3
4
5
| DECLARE text VARCHAR2(12) := 'hello world!' ; BEGIN dbms_output.put_line(INITCAP(text)); END ; |
INSTR: tìm vị trí nơi một chuỗi con bắt đầu trong 1 chuỗi cha
1
2
3
4
5
| DECLARE text VARCHAR2(12) := 'Hello World!' ; BEGIN dbms_output.put_line( 'Start [' ||INSTR(text, 'World' ,1)|| ']' ); END ; |
Kết quả trả về sẽ là Start [7]
LENGTH: hàm này đơn giản, trả về chiều dài của chuỗi
LTRIM: cắt bỏ khoảng trắng ở đầu một chuỗi. Hàm này giống bên SQL Server.
RPAD(output_string, output_length, padding_character): giống hàm LPAD ở trên, nhưng ở vị trí cuối
REPLACE(base_string, search_string, replace_string): thay thế một chuỗi con bằng một chuỗi khác
UPPER, LOWER: 2 hàm này viết thường, viết hoa một chuỗi, giống bên SQL Server.
COALESCE: tìm phần tử đầu tiên không null trong một tập hợp, giống bên SQL Server.
DECODE: cú pháp như sau:
DECODE: cú pháp như sau:
1
|
1
2
3
4
| DECODE(evaluation_expression, comparison_expression1, true_expression1 , comparison_expression2, true_expression2 , comparison_expression(n+1), true_expression(n+1) , comparison false_expression); |
Hàm Decode này thực thi tương tự như cấu trúc if-then-else and if-then-else-if-then-else trong SQL
1
2
3
4
5
6
7
8
9
10
11
| DECLARE redsox NUMBER := 96; yankees NUMBER := 94; division NUMBER := 96; headline VARCHAR2(30); BEGIN SELECT DECODE(division,yankees, 'Yankees clinch pennant.' ,redsox, 'Red Sox clinch pennant.' , 'Tied Again!' ) INTO headline FROM dual; dbms_output.put_line(headline); END ; |
CÁC HÀM VỀ XỬ LÝ SỐ
CEIL: hàm này cho phép ta làm tròn số với giá trị tiếp theo lớn hơn giá trị hiện tại
1
2
3
4
5
| DECLARE n NUMBER := 4.1; BEGIN dbms_output.put_line( 'Ceiling [' ||CEIL(n)|| ']' ); END ; |
Kết quả sẽ là Ceiling [5]
MODE: lấy phần dư của một phép chia
REMAINDER: lấy phần dư của một phép chia, giống hàm MODE, nhưng hàm này có 1 chút khác biệt, chạy ví dụ sau đây sẽ rõ.
1
2
3
4
5
6
7
| DECLARE n NUMBER := 16; m NUMBER := 3.24; BEGIN dbms_output.put_line( 'Remainder [' ||REMAINDER(n,m)|| ']' ); dbms_output.put_line( 'Remainder [' ||MOD(n,m)|| ']' ); END ; |
POWER: hàm này là tính lũy thừa của 1 số
1
2
3
4
5
6
| DECLARE n NUMBER := 3; m NUMBER := 4; BEGIN dbms_output.put_line( 'Cube of [' ||n|| '] is [' ||POWER(n,m)|| ']' ); END ; |
1
|
FLOOR: cắt đi phần thập phân của một số, giữ lại phần nguyên
1
2
3
4
5
| DECLARE n NUMBER := 4.44; BEGIN dbms_output.put_line( 'Flooring [' ||FLOOR(n)|| ']' ); END ; |
Nhận xét
Đăng nhận xét