- Mục tiêu
SysVn xin giới thiệu bài viết “Cách sử dụng Single-Row Functions trong Oracle SQL”. Sau khi hiểu nội dung bài này các bạn có thể mô tả và sử dụng được những hàm khác nhau trong SQL. Sử dụng những hàm kiểu character, number và date, …
2. Giới thiệu
Những hàm (SQL Functions) có tác dụng thực hiện tính toán dữ liệu, hiệu chỉnh lại dữ liệu, hiệu chỉnh kết quả đầu ra cho những nhóm hàng, định dạng kiểu ngày (date) và kiểu số (number) cho viêc hiển thị, chuyển đổi kiểu dữ liệu
SQL Functions có 2 loại: Single-row functions và Multiple-row functions
- Single-row functions: từ 1 dữ liệu đầu vào trả ra 1 kết quả đầu ra trên 1 hàng bao gồm các hàm: Character, Number, Date, Conversion, General.
- Multiple-row functions: Thao tác dữ liệu trên những nhóm của những hàng trả về kết quả trên một nhóm của những hàng. Những hàm này gọi là group functions sẽ được tìm hiểu trong các bài sau
3. Single-Row Functions
Cú pháp: function_name [(arg1, arg2,…)]
Single-row function được dùng để thao tác dữ liệu, đầu vào có thể 1 hoặc nhiều argument, trả về một giá trị tương ứng mỗi hàng được thực hiện bởi câu truy vấn. Một argument có thể là: hằng số, giá trị biến, tên column, biểu thức
Tính năng của Single-row function:
- Hoạt động trên mỗi hàng được trả về bởi câu truy vấn
- Trả về một kết quả trên một hàng
- Có thể trả về 1 giá trị dữ liệu khác với kiểu dữ liệu ban đầu
- Giá trị đầu vào có thể một hoặc nhiều argument
- Có thể được sử dụng trong mệnh đề SELECT, WHERE, ORDER BY hoặc có thể lồng vào nhau
Theo cú pháp ở trên thì
- function_name: là tên của hàm
- arg1, arg2: là argument được sử dụng bởi hàm
a. Character Functions
Giá trị đầu vào là character (ký tự), giá trị đầu ra có thể là kiểu character hoặc kiểu number
Single-row character function phân thành 2 loại: Case-conversion functions (những hàm chuyển đổi ký tự hoa, thường) và Character-manipulation functions (những hàm thao tác ký tự)
- Case-conversion functions:
Ví dụ:
SELECT ‘The job id for ‘||UPPER(last_name)||’ is ‘
||LOWER(job_id) AS “EMPLOYEE DETAILS”
FROM employees;
Ví dụ:
Ví dụ trên có thể viết lại
SELECT employee_id, UPPER(last_name), department_id
FROM employees
WHERE INITCAP(last_name) = ‘Higgins’
- Character-Manipulation Functions (Những hàm thao tác ký tự)
Những hàm như: CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD, REPLACE, TRIM là những hàm Character-Manipulation Functions. Xem bảng mô tả ví dụ những hàm Character-Manipulation ta cũng có thể biết được chức năng của từng hàm như thế nào rồi, không cần giải thích thêm.
Ví dụ:
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name), last_name,
INSTR(last_name, ‘a’) “Contains ‘a’?”
FROM employees
WHERE SUBSTR(job_id, 4) = ‘REP’;
Ví dụ:
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name),last_name,
INSTR(last_name, ‘a’) “Contains ‘a’?”
FROM employees
WHERE SUBSTR(last_name, -1, 1) = ‘n’
b. Number functions
- ROUND: Làm tròn giá trị tới số thập phân được chỉ ra
- TRUNC: Cắt giá trị tới số thập phân được chỉ ra
- MOD: Lấy số dư
Cú pháp của 3 number function cơ bản
Hàm | Chức năng |
ROUND(column|expression, n) | Làm tròn giá trị cột, biểu thức hoặc giá trị số tới vị trí n thập phân được chỉ ra. Nếu không chỉ ra n tức n=0. Nếu n có giá trị âm thì những số bên trái dấu chấm thập phân được làm tròn |
TRUNC(column|expression, n) | Cắt giá trị cột, biểu thức, hoặc giá trị số tới vị trí n thập phân. Nếu n không chỉ ra tức n=0, n có giá trị mặc định là 0 |
MOD(m,n) | Lấy số dư của m chi cho n |
Ví dụ sử dụng hàm ROUND
DUAL là một bảng public được owner bởi user SYS và được phép truy cập bởi tất cả user.
Ví dụ: Sử dụng hàm TRUNC
Chú ý: Hàm TRUNC và ROUND có thể sử dụng với dữ liệu kiểu date
Ví dụ sử dụng hàm MOD
SELECT last_name, salary, MOD(salary, 5000)
FROM employees
WHERE job_id = ‘SA_REP’;
Chú ý: Hàm MOD thường được sử dụng kiểm tra chẵn, lẻ