Chương 3 HÀM SQL
- Lý thuyết: 3 tiết
- Thực hành: 2 tiết
Chương 3. Hàm SQL
3- 1
Hàm SQL
3.1 Tổng quan về hàm SQL
chương trình con thực hiện một chức năng nào đó
trả về chỉ một giá trị
Chương 3. Hàm SQL
3- 2
Hàm SQL
3.1 Tổng quan về hàm SQL
Phân loại
từng dòng dữ liệu: trả về một giá trị trên một dịng
nhóm các dòng dữ liệu: trả về một giá trị trên một nhóm
dịng
Chương 3. Hàm SQL
3- 3
Hàm SQL
3.2 Các hàm trên hàng đơn
kiểu dữ liệu số
kiểu dữ liệu ký tự
kiểu dữ liệu thời gian
Các hàm chuyển đổi kiểu
Chương 3. Hàm SQL
3- 4
Hàm SQL
3.2.1 Các hàm trên kiểu số
Hàm ROUND(n[,m])
làm tròn n đến m chư˜ số thập phân (mặc định m=0)
m<0 thì làm trịn sớ bên trái dấu thập phân
Ví dụ
ROUND(4.923,1), kết quả là 4.9
ROUND(4.923,-1), kết quả là 0
ROUND(6.923,-1), kết quả là 10
Chương 3. Hàm SQL
3- 5
Hàm SQL
3.2.1 Các hàm trên kiểu số
Hàm TRUNC(n[,m])
lấy m chữ số tính từ chấm thập phân (m=0).
m<0 thì cắt bỏ m chư˜ sớ bên trái dấu thập phân.
Ví dụ
TRUNC (4.923,1), kết quả là 4.9.
TRUNC(4.923), kết quả là 4.
TRUNC(4.923,-1), kết quả là 0
Chương 3. Hàm SQL
3- 6
Hàm SQL
3.2.1 Các hàm trên kiểu số
Hàm CEIL(n)
trả về số nguyên nhỏ nhất lớn hơn hoặc bằng n
Ví dụ
CEIL(4.923), kết quả là 5
Hàm FLOOR(n)
trả về số nguyên lớn nhất nhỏ hơn hoặc bằng n
Ví dụ
FLOOR(4.923), kết quả là 4
Chương 3. Hàm SQL
3- 7
Hàm SQL
3.2.1 Các hàm trên kiểu số
Hàm SQRT(n)
trả về căn bậc 2 của n, với n>=0
Ví dụ
SQRT(16), kết quả là 4
Hàm POWER(m,n)
trả về lũy thừa bậc n của m
Ví dụ
POWER(2,3), kết quả là 8
Chương 3. Hàm SQL
3- 8
Hàm SQL
3.2.1 Các hàm trên kiểu số
Hàm SIGN(n)
Nếu n<0 thì SIGN(n)= -1
Nếu n=0 thì SIGN(n)= 0
Nếu n>0 thì SIGN(n)= 1
Ví dụ
SIGN(1724)=1.
SIGN(0)=0.
SIGN(-1724)=-1.
Chương 3. Hàm SQL
3- 9
Hàm SQL
3.2.1 Các hàm trên kiểu số
Hàm ABS(n)
ABS(127)=127.
ABS(-127)=127.
Hàm MOD(m,n)
trả về phần dư của phép chia m cho n.
Ví dụ
MOD(5,3)=2.
MOD(4,3)=1.
Chương 3. Hàm SQL
3- 10
Hàm SQL
3.2.1 Các hàm trên kiểu số
Một số hàm khác
Hàm SQL
LOG(m,n)
SIN(n)
COS(n)
TAN(n)
Diễn giải
Cho logarit cơ số m của n.
Trả về sin của n (n tính bằng radian).
Cho cosin của n (n tính bằng radian).
Trả về tang của n (n tính bằng radian).
Chương 3. Hàm SQL
3- 11
Hàm SQL
3.2.2 Các hàm trên kiểu ký tự
Hàm CONCAT(char1, char2)
kết hợp của 2 chuỗi ký tự char1 và char2
Ví dụ
CONCAT(‘SQL’, ‘ORACLE’), kết quả là SQLORACLE.
Hàm INITCAP(char)
chuỗi với ký tự đầu các từ là ký tự hoa.
Ví dụ
INITCAP(oracle), kết quả là Oracle
Chương 3. Hàm SQL
3- 12
Hàm SQL
3.2.3 Các hàm trên kiểu ký tự
Hàm LOWER(char)
chuỗi ký tự viết thường
Ví dụ
LOWER(‘ORACLE’), kết quả là oracle.
Hàm UPPER(char)
chuỗi ký tự viết hoa.
Ví dụ
UPPER(oracle), kết quả là ORACLE
Chương 3. Hàm SQL
3- 13
Hàm SQL
3.2.3 Các hàm trên kiểu ký tự
Hàm REPLACE(char, search [,replace])
Thay chuỗi search có trong char bằng chuỗi replace
Ví dụ
REPLACE(‘SALESMAN’, ‘MAN’, ’ ’);
Kết quả là SALES
Hàm ASCII(char)
ký tự ASCII của byte đầu tiên của chuỗi char.
Ví dụ
ASCII(‘TOI’); kết quả là 84
Chương 3. Hàm SQL
3- 14
Hàm SQL
3.2.3 Các hàm trên kiểu ký tự
Hàm SUBSTR(char, m [,n])
chuỗi con lấy từ vị trí m về bên phải n ký tự,
nếu khơng chỉ định n thì lấy cho đến cuối chuỗi
Ví dụ
SUBSTR(‘ORACLE’,2,4); kết quả là RACL.
SUBSTR(‘ORACLE’,2); kết quả là RACLE.
Chương 3. Hàm SQL
3- 15
Hàm SQL
3.2.3 Các hàm trên kiểu ký tự
Hàm INSTR(char1, char2 [,n[,m]])
Tìm vị trí char2 trong char1 từ vị trí n, lần xuất hiện thứ m
Ví dụ
INSTR(‘ACCOUNTING’,'A'); kết quả là 1.
Hàm LENGTH(char)
chiều dài của chuỗi char
Ví dụ
LENGTH(‘SQL COURSE’), kết quả là 10.
Chương 3. Hàm SQL
3- 16
Hàm SQL
3.2.3 Các hàm trên kiểu thời gian
Hàm MONTHS_BETWEEN(d1, d2)
số tháng giữa ngày d1 và d2
Ví dụ
MONTHS_BETWEEN('01-01-2000','01-05-2000');
quả 5.
kết
Hàm ADD_MONTHS(d, n)
ngày d sau khi thêm n tháng
Ví dụ
ADD_MONTHS('01-05-2000’, 3); kết quả là 01-08-2000
Chương 3. Hàm SQL
3- 17
Hàm SQL
3.2.3 Các hàm trên kiểu thời gian
Hàm NEXT_DAY(d, char)
ngày tiếp theo ngày d có thứ chỉ bởi char
Ví dụ
NEXT_DAY(‘17-11-2000’,’Friday’); kết quả là 24-112000.
Hàm LAST_DAY(d)
ngày cuối cùng trong tháng chỉ bởi d.
Ví dụ
LAST_DAY(‘17-11-2000’); kết quả là 30
Chương 3. Hàm SQL
3- 18
Hàm SQL
3.2.3 Các hàm trên kiểu thời gian
Hàm SQL
Diễn giải
ROUND(date1)
Trả về ngày date1 tại thời điểm giữa trưa
12:00 AM
ROUND(date1,’Month’)
Nếu date1 nằm trong nửa tháng đầu trả về
ngày đầu tiên của tháng, ngược lại sẽ trả về
ngày đầu tiên của tháng sau.
ROUND(date1,’Year’)
Nếu date1 nằm trong nửa năm đầu trả về
ngày đầu tiên của tháng, ngược lại sẽ trả về
ngày đầu tiên của năm sau.
TRUNC(date1, ’Month’)
Trả về ngày đầu tiên của tháng chứa date1
TRUNC(date1, ’Year’)
Trả về ngày đầu tiên của năm chứa date1
Chương 3. Hàm SQL
3- 19
Hàm SQL
3.2.4 Các hàm chuyển đổi kiểu
Hàm TO_CHAR(number|date, ‘fmt’)
Chuyển kiểu số và ngày về kiểu ký tự theo định dạng fmt
Ví dụ
TO_CHAR(‘17-11-2000’,’DD/MM’); kết quả là 17/11.
TO_CHAR(‘17-11-2005’,’MM/YY’); kết quả là 11/05.
Hàm TO_NUMBER(char)
Chuyển chuỗi ký tự có nội dung số sang số
TO_NUMBER(‘12345’); kết quả là 12345.
Chương 3. Hàm SQL
3- 20
Hàm SQL
3.2.4 Các hàm chuyển đổi kiểu
Hàm TO_DATE(‘char’,’fmt’)
Chuyển ký tự sang kiểu ngày với định dạng fmt.
Ví dụ
TO_DATE(‘17-11-2005’,’dd-mm-yy’); kết quả 17-11-05
Hàm GREATEST(value1, value2,…)
giá trị lớn nhất trong dãy giá trị
Ví dụ
GREATEST(12, 45, 6, 78); kết quả là 78.
Chương 3. Hàm SQL
3- 21
Hàm SQL
3.2.4 Các hàm chuyển đổi kiểu
Hàm DECODE(Expr, Search1, Result1, Default)
trả về giá trị result1nếu expr = search1
trả về giá trị default nếu expr <> search1
Ví dụ
DECODE(‘SALE’, ‘SALE’, 500,0); kết quả là 500.
DECODE(‘SALE’, ‘MANAGE’, 500,0); kết quả là 0.
Chương 3. Hàm SQL
3- 22
Hàm SQL
3.3 Một số hàm bổ sung
Hàm NULLIF
NULLIF(expr1, expr2)
trả về giá trị NULL nếu expr1= expr2.
trả về giá trị của expr1 nếu ngược lại
Ví dụ
NULLIF(Length(‘ORA’), Length(‘ORA’)); kết quả là NULL
NULLIF(Length(‘SQL’), Length(‘ORAC’)); kết quả 3
Chương 3. Hàm SQL
3- 23
Hàm SQL
3.3 Một số hàm bổ sung
Hàm COALESCE
COALESCE(expr1, expr2, …exprn)
trả về giá trị của tham số đầu tiên khác NULL
Ví dụ
Giả sử v1=null; v2=null, v3=1, v4=2.
COALESCE(v1, v2, v3)=1;
COALESCE(v1, v2, v4, v3)=2;
Chương 3. Hàm SQL
3- 24
Hàm SQL
3.3 Một số hàm bổ sung
Câu lệnh CASE
CASE expr
WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
so sánh expr lần lượt với các comparison_exprx
trả về return_expr tương ứng
Chương 3. Hàm SQL
3- 25