Cách sử dụng Single-Row Functions trong Oracle SQL

  1. 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ự)
Bảng mô tả ví dụ những hàm Character-Manipulation

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ẻ