Professional Documents
Culture Documents
Chuong 3-Ham Trong SQL
Chuong 3-Ham Trong SQL
ROUND(n[,m]) Cho giá trị làm tròn của n (đến cấp m, mặc nhiên m=0)
TRUNC(n[,m]) Cho giá trị n lấy m chữ số tính từ chấm thập phân
SELECT ROUND(4.923,1),
ROUND(4.923),
ROUND(4.923,-1),
ROUND(4.923,2)
FROM DUAL;
• Ví dụ hàm SIGN(n)
SELECT a.amt, SIGN(a.amt)
FROM rtxnbal a
2. Hàm SQL thao tác trên từng dòng dữ liệu (tt)
a. Các hàm thao tác trên kiểu dữ liệu số (tt)
• Ví dụ hàm ABS(n)
SELECT r.acctnbr, r.rtxnnbr, r.tranamt, ABS(r.tranamt)
FROM rtxn r;
• Ví dụ hàm SIGN(n)
SELECT a.amt, SIGN(a.amt)
FROM rtxnbal a
2. Hàm SQL thao tác trên từng dòng dữ liệu
b. Các hàm thao tác trên kiểu dữ liệu ký tự
Hàm SQL Diễn giải
CONCAT(char1, Cho kết hợp của 2 chuỗi ký tự, tương tự như sử dụng toán tử ||
char2)
INITCAP(char) Cho chuỗi với ký tự đầu các từ là ký tự
hoa
LOWER(char) Cho chuỗi ký tự viết thường (không viết
hoa)
LPAD(char1, n Cho chuỗi ký tự có chiều dài bằng n. Nếu chuỗi char1 ngắn hơn n
[,char2]) thì thêm vào bên trái chuỗi char2 cho đủ n ký tự. Nếu chuỗi char1
dài hơn n thì giữ lại n ký từ tính từ trái sang
LTRIM(char1, n Bỏ các ký tự trống bên trái
[,char2])
2. Hàm SQL thao tác trên từng dòng dữ liệu (tt)
b. Các hàm thao tác trên kiểu dữ liệu ký tự (tt)
• Ví dụ hàm INITCAP(char)
SELECT INITCAP ('nguyen huu hong duc')
FROM dual;
• Ví dụ hàm LOWER(char)
SELECT LOWER ('NGUYEN HUU HONG DUC')
FROM dual;
REPLACE(char,s Thay tất cả các chuỗi search_string có trong chuỗi char bằng chuỗi
earch_string[,re replacement_string.
placem
ent_string])
RPAD(char1, n Giống LPAD(char1, n *,char2+) nhưng căn phải.
[,char2])
RTRIM(char1, n Bỏ các ký tự trống bên phải
[,char2])
SUBSTR(char, m Cho chuỗi con của chuỗi char lấy từ vị trí m vế phải n ký tự, nếu
[,n]) không chỉ n thì lấy cho đến cuối chuỗi
UPPER(char) Cho chuỗi chữ hoa của chuỗi char
2. Hàm SQL thao tác trên từng dòng dữ liệu (tt)
b. Các hàm thao tác trên kiểu dữ liệu ký tự (tt)
• Ví dụ hàm REPLACE(char,search_string[,replacement_string])
SELECT 'Nguyen Huu Hong Duc', REPLACE('Nguyen Huu
Hong Duc','Duc','Minh')
FROM dual;
• Ví dụ hàm UPPER(char)
SELECT UPPER('Nguyen Huu Hong Duc')
FROM dual;
2. Hàm SQL thao tác trên từng dòng dữ liệu
b. Các hàm thao tác trên kiểu dữ liệu ký tự (tt)
Hàm SQL Diễn giải
• Ví dụ hàm LENGTH(char)
SELECT LENGTH ('Nguyen Huu Hong Duc')
FROM dual;
2. Hàm SQL thao tác trên từng dòng dữ liệu
c. Các hàm thao tác trên kiểu dữ liệu thời gian
Hàm SQL Diễn giải
• Ví dụ hàm ADD_MONTHS(d,n)
SELECT sysdate, ADD_MONTHS(SYSDATE, 3)
FROM dual;
2. Hàm SQL thao tác trên từng dòng dữ liệu (tt)
b. Các hàm thao tác trên kiểu dữ liệu thời gian (tt)
• Ví dụ hàm LAST_DAY(d)
SELECT SYSDATE, LAST_DAY(SYSDATE)
FROM dual;
2. Hàm SQL thao tác trên từng dòng dữ liệu
d. Một số hàm có thể áp dụng trên kiểu dữ liệu
thời gian
Hàm SQL Diễn giải
ROUND(date1) Làm tròn ngày date1 tính từ thời điểm giữa trưa 12:00 AM của
ngày date1
ROUND(date1,’ Nếu date1 nằm trong nửa tháng đầu trả về ngày đầu tiên của
MONTH’) tháng, ngược lại sẽ trả về ngày đầu tiên của tháng sau.
ROUND(date1,’ Nếu date1 nằm trong nửa năm đầu trả về ngày đầu tiên của
YEAR’) tháng, ngược lại sẽ trả về ngày đầu tiên của năm sau.
TRUNC(date1, Trả về ngày đầu tiên của tháng chứa date1
’MONTH’)
TRUNC(date1, Trả về ngày đầu tiên của năm chứa date1
’YEAR’)
2. Hàm SQL thao tác trên từng dòng dữ liệu (tt)
d. Một số hàm có thể áp dụng trên kiểu dữ liệu thời
gian (tt)
• Ví dụ hàm ROUND(date1)
SELECT a.datelastmaint, ROUND(a.datelastmaint)
FROM acctdatemathist a
WHERE a.acctnbr = 163799;
• Ví dụ hàm ROUND(date1,’MONTH’)
SELECT a.datelastmaint, ROUND(a.datelastmaint,
'MONTH')
FROM acctdatemathist a
WHERE a.acctnbr = 163799;
2. Hàm SQL thao tác trên từng dòng dữ liệu (tt)
d. Một số hàm có thể áp dụng trên kiểu dữ liệu thời
gian (tt)
• Ví dụ hàm ROUND(date1, ‘YEAR’)
SELECT a.datelastmaint, ROUND(a.datelastmaint, 'YEAR')
FROM acctdatemathist a
WHERE a.acctnbr = 163799;
• Ví dụ hàm TO_NUMBER(char)
SELECT p.taxid, to_number(p.taxid)
FROM pers p
WHERE p.persnbr = 16058;
2. Hàm SQL thao tác trên từng dòng dữ liệu (tt)
d. Các hàm chuyển đổi kiểu
• Ví dụ hàm TO_DATE(‘chsr’,’fmt’)
SELECT '17/09/2012', to_date('17/09/2012',
'dd/mm/yyyy')
FROM dual;
• Tác động trên toàn bộ các dòng dữ liệu của câu lệnh truy vấn
• Tác động trên một nhóm dữ liệu cùng tính chất của câu lệnh
truy vấn. Cùng tính chất được chỉ bởi mệnh đề:
– [GROUP BY expr]
[HAVING condition]
3. Hàm SQL thao tác trên tập hợp
a. Các hàm tác động trên nhóm (tt)
Ví dụ: Tác động trên toàn bộ các dòng dữ liệu của câu lệnh truy
vấn:
SELECT SUM(r.tranamt)
FROM rtxn r
WHERE r.acctnbr = 106329
AND r.rtxntypcd = 'DEP'
AND r.origpostdate >= to_date('09092011', 'ddmmyyyy')
AND r.origpostdate <= to_Date('21092011', 'ddmmyyyy');
3. Hàm SQL thao tác trên tập hợp
a. Các hàm tác động trên nhóm (tt)
Ví dụ: Tác động trên một nhóm dữ liệu cùng tính chất của câu
lệnh truy vấn:
SELECT SUM(r.tranamt)
FROM rtxn r
WHERE r.acctnbr = 106329
AND r.rtxntypcd = 'DEP'
AND r.origpostdate >= to_date('09092011', 'ddmmyyyy')
AND r.origpostdate <= to_Date('21092011', 'ddmmyyyy');
Tổng kết
• Tổng quan về hàm trong SQL
• Hàm SQL thao tác trên từng dòng dữ liệu
– Các hàm thao tác trên kiểu dữ liệu số
– Các hàm thao tác trên kiểu dữ liệu ký tự
– Các hàm thao tác trên kiểu dữ liệu thời gian
– Một số hàm bổ sung có thể áp dụng trên kiểu dữ
liệu thời gian
– Các hàm chuyển đổi kiểu
• Hàm SQL thao tác trên tập hợp
– Các hàm tác động trên nhóm
QUESTIONS?