Các function trong Oracle

Các function trong Oracle

 
11:37
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

?
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
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

?
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.
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

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
UPPERLOWER: 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:
?
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
 
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
?
1
2
3
4
5
DECLARE
  n NUMBER := 4.44;
BEGIN
  dbms_output.put_line('Flooring ['||FLOOR(n)||']');
END;

Nhận xét

Bài đăng phổ biến