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ị 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ữ
Trang 1Chương 3 HÀM SQL
- Lý thuyết: 3 tiết
- Thực hành: 2 tiết
Trang 23.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ị
Hàm SQL
Trang 33.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ómdòng
Hàm SQL
Trang 43.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
Hàm SQL
Trang 53.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.9ROUND(4.923,-1), kết quả là 0 ROUND(6.923,-1), kết quả là 10
Hàm SQL
Trang 93.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
Trang 143.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
Trang 153.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
Hàm SQL
Trang 173.2.3 Các hàm trên kiểu thời gian
số tháng giữa ngày d1 và d2
Ví dụ
MONTHS_BETWEEN('01-01-2000','01-05-2000'); kết quả 5
Hàm ADD_MONTHS(d, n)
ngày d sau khi thêm n tháng
Ví dụ
Hàm SQL
Trang 183.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à 2000
24-11- Hàm LAST_DAY(d)
ngày cuối cùng trong tháng chỉ bởi d
Ví dụ
Hàm SQL
Trang 193.2.3 Các hàm trên kiểu thời gian
ROUND(date1,’Year’)
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.
Trang 203.2.4 Các hàm chuyển đổi kiểu
Trang 213.2.4 Các hàm chuyển đổi kiểu
Trang 223.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
Hàm SQL
Trang 233.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à NULLNULLIF(Length(‘SQL’), Length(‘ORAC’)); kết quả 3
Hàm SQL
Trang 243.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
Trang 25END
so sánh expr lần lượt với các comparison_exprx
trả về return_expr tương ứng
Hàm SQL
Trang 263.3 Một số hàm bổ sung
Câu lệnh CASE
Ví dụ
CASE LENGTH(‘SQL’)
WHEN 2 THEN “Do dai bang 2.”
WHEN 3 THEN “Do dai bang 3.”
WHEN 4 THEN “Do dai bang 4.”
ELSE “Khong thoa man.”
Hàm SQL
Trang 273.3 Một số hàm bổ sung
Câu lệnh CASE
Ví dụ
SELECT Ename, Job_Id, Sal,
CASE Job_Id WHEN ‘IT_PROG’ THEN 0.5*Sal,
WHEN ‘ST_SALE’ THEN 0.6*Sal,WHEN ‘SA_MAN’ THEN 0.7*Sal,ELSE Sal
END “AddSal”
Hàm SQL
Trang 283.3 Một số hàm bổ sung
Câu lệnh CASE
Ví dụ
SELECT Ename, Job_Id, Sal,
CASE Job_Id WHEN ‘IT_PROG’ THEN 0.5*Sal,
WHEN ‘ST_SALE’ THEN 0.6*Sal,WHEN ‘SA_MAN’ THEN 0.7*Sal,ELSE Sal
END “AddSal”
Hàm SQL
Trang 29Giá trị trung bình của n, không kể trị null
AVG([DISTINCT/ALL] n)
Diễn giải
Hàm SQL
Trang 313.4 Các hàm gộp nhóm dữ liệu
Mệnh đề GROUP BY
GROUP BY nhóm các dòng dữ liệu có cùng giá trị expr
HAVING dùng để đặt điều kiện cho nhóm dữ liệu
Trang 32Câu hỏi và bài tập
Trả lời câu hỏi phần 3.5 trong giáo trình
Thực hành viết các câu lệnh truy vấn trong phần bài tập
Chuẩn bị nội dung chương 4.
Câu lệnh SQL