Để người dùng thuận tiện hơn trong quá trình tương tác với cơ sở dữ liệu, SQL cung cấp một số hàm đã được tạo sẵn. Hàm là một nhóm lệnh để chuyển đổi đầu vào (dưới dạng đối số) và thu được kết quả nhất định. Tuy nhiên ta cũng cần lưu ý rằng cũng có một số hàm không cần dùng đối số.
Dựa vào tính chất của đối số, người ta chia các hàm dựng sẵn trong SQL làm hai nhóm chính:
Bên cạnh các hàm tiêu chuẩn của SQL, các hệ quản trị cơ sở dữ liệu còn có thể bổ sung thêm một số hàm khác, hay sử dụng tên khác, hay thay đổi vị trí của đối số. Vì thế khi sử dụng hàm cần tham khảo thêm tài liệu hướng dẫn của hệ quản trị cơ sở dữ liệu cụ thể.
Bảng 3.3a liệt kê một số hàm có đối số là một giá trị số theo tiêu chuẩn ANSI.
Tên hàm | Thực hiện |
---|---|
ABS(x) | Tính giá trị tuyệt đối của x |
ACOS(x) | Tính arccos(x) |
ASIN(x) | Tính arcsin(x) |
ATAN(x) | Tính arctg(x) |
ATAN2(y, x) | Tính arctg(y/x) |
BIN(x) | Chuyển x sang hệ nhị phân (tương đương CONV(x, 10, 2)) |
CEIL(x) & CEILING(x) | Tìm giá trị nguyên kế tiếp x |
CONV(x, c1, c2) | Chuyển x từ cơ số c1 sang cơ số c2 |
COS(x) | Tính cos(x) (đơn vị của x là radian) |
COT(x) | Tính cot(x) (đơn vị của x là radian) |
DEGREES(x) | Chuyển từ x radian sang độ |
EXP(x) | Tính ex |
FLOOR(x) | Tìm giá trị nguyên ngay trước x |
GREATEST(X) | Tìm giá trị lớn nhất trong tập hợp X |
HEX(x) | Chuyển x sang hệ thập lục phần (tương đương CONV(x, 10, 16)) |
INTERVAL(x, X) | Tìm vị trí của x trong tập howjp X |
LEAST(X) | Tìm giá trị nhỏ nhất trong tập hợp X |
LN(x) & LOG(x) | Tính logarit tự nhiên của x (cơ số e) |
LOG(x, c) | Tính logarit cơ số c của x |
LOG10(x) | Tính logarit cơ số 10 của x |
MOD(x, y) | Tìm phần dư của x chia cho y |
OCT(x) | Chuyễn x sang cơ số 8 (Tương đương với CONV (x, 10, 8)) |
PI(x) | Giá trị của π |
POW(x, y) & POWER(x, y) | Tính xy |
RADIANS(x) | Chuyển từ x độ sang radian |
RAND() | Chọn một giá trị ngẫu nhiên trong khoảng 0 và 1 |
ROUND(x, n) | Làm tròn x đến giá trị có n số thập phân gần nhất |
SIGN(x) | Lấy dấu của x |
SIN(x) | Tính sin(x) (đơn vị của x là radian) |
SQRT(x) | Tính căn số bậc 2 của x |
TAN(x) | Tính tg(x) (đơn vị của x là radian) |
TRUNCATE(x, t) | Cắt x sao cho chỉ còn t số thập phân |
WIDTH_BUCKET(x, min, max, n) | Trả lời câu hỏi sau : nếu ta chia khoảng từ min đến max làm n nhóm thì x thuộc nhóm thứ mấy ? |
Ghi chú : Trong các hàm trên, x là một số hay một biểu thức có giá trị số.
Bảng 3.3b liệt kê một số hàm có đối số là một chuỗi ký tự theo tiêu chuẩn ANSI.
Tên hàm | Thực hiện |
---|---|
ASCII(ch) | Chuyển ký tự đầu tiên của chuỗi ch thành số |
BIT_LENGTH(ch) | Tính chiều dài theo đơn vị bit của chuỗi ch. |
CHAR_LENGTH(ch) & CHARACTER_LENGTH(ch) | Tính số ký tự của chuỗi ch. |
CONCAT(ch1, ch2, ... ) | Nối các chuỗi ch1, ch2, ... |
CONCAT_WS(pc, ch1, ch2, ... ) | Nối các chuỗi ch1, ch2, ... và đặt ký tự phân cách pc vào giữa hai chuỗi kế tiếp nhau |
ELT(i, ch1, ch2, ch3, ... , chn) | Lấy chuỗi chi |
FIELD(ch, ch1, ch2, ch3, ...) | Tìm vị trí của ch trong danh sách ch1, ch2, ch3, ... |
FIND_IN_SET(ch, ds) | Tìm vị trí của chuỗi ch trong danh sách ds |
INSERT(ch, p, n, cht) | Thay thế n ký tự của chuỗi ch, từ vị trí p, bằng chuỗi cht |
INSTR(ch, chc) | Tìm vị trí đầu tiên của chuỗi con chc trong chuỗi ch (gần giống LOCATE) |
LCASE(ch) | Chuyển ch thành chuỗi ký tự viết thường (tương tự LOWER) |
LEFT(ch, n) | Lấy n ký tự ở bên trái chuỗi ch |
LENGTH(ch) | Xác định chiều dài chuỗi ch theo đơn vị byte (tương tự OCTET_LENGTH) |
LOCATE(chc, ch) | Tìm vị trí đầu tiên của chuỗi con chc trong chuỗi ch (gần giống INSTR) |
LOWER(ch) | Chuyển ch thành chuỗi ký tự viết thường (tương tự LCASE) |
LPAD(ch, n, cht) | Tạo chuỗi mới có n ký tự bằng cách thêm chuỗi cht vào bên phải chuỗi ch |
LTRIM(ch) | Loại bỏ các ký tự trống bên trái chuỗi ch |
MID(ch, p, n) | Từ chuỗi ch, lấy ra một chuỗi con có n ký tự từ vị trí p của chuỗi ch |
OCTET_LENGTH(ch) | Tính chiều dài chuỗi ch theo đơn vị byte (octet) (tương tự LENGTH) |
OVERLAY(ch PLACING chx FROM p [FOR n]) | Thay thế n ký tự của chuỗi ch, từ vị trí thứ p, bằng chuỗi chx |
POSITION(chx IN ch) | Tìm vị trị bắt đầu của chuỗi chx trong chuỗi ch |
REPEAT(ch, n) | Lặp lại chuỗi ch n lần |
REPLACE(ch, ch1, ch2) | Thay thế ch1 trong ch bằng ch2 |
REVERSE(ch) | Đảo ngược chuỗi ch |
RIGHT(ch, n) | Lấy n ký tự ở bên phải chuỗi ch |
RPAD(ch, n, chp) | Tạo chuỗi mới có n ký tự bằng cách thêm chuỗi cht vào bên phải chuỗi ch |
RTRIM(ch) | Loại bỏ các ký tự trống bên phải chuỗi ch |
SPACE(n) | Tạo chuỗi gồm n ký tự trống |
STRCMP(ch1, ch2) | So sánh hai chuỗi ch1 và ch2 |
SUBSTRING(ch FROM p [FOR n]) | Từ chuỗi ch, lấy ra một chuỗi con có n ký tự từ vị trí p của chuỗi ch |
TRANSLATE(ch USING chx) | Thay thế chuỗi ch bằng chuỗi chx |
TRIM( [ [{ LEADING | TRAILING | BOTH }] cht ] ch) | Lấy chuỗi cht khỏi chuỗi ch. Nếu tùy chọn là LEADING thì chỉ lấy ở phẩn đầu của chuỗi ch. Nếu tùy chọn là TRAILING thì chỉ lấy ở phẩn sau của chuỗi ch. Nếu tùy chọn là BOTH thì lấy ở cả hai phẩn, đầu và sau, của chuỗi ch. |
UCASE(ch) & UPPER(ch) | Chuyển ch thành CHUỖI KÝ TỰ IN HOA |
Ghi chú : Trong các hàm trên, ch là một chuỗi ký tự hay một biểu thức có giá trị là một chuỗi ký tự.
Bảng 3.3c liệt kê một số hàm có đối số là một tập hợp giá trị theo tiêu chuẩn ANSI.
Tên hàm | Thực hiện |
---|---|
AVG(X) | Tính trị trung bình của X |
CORR(Y, X) | Tính hệ số tương quan của X và Y |
COUNT(X) | Xác định số phần tử của X |
COVAR_POP(Y, X) | Tính hiệp phương sai giữa X và Y của tổng thể |
COVAR_SAMP(Y, X) | Tính hiệp phương sai giữa X và Y của mẫu |
CUME_DIST(x) WITHIN GROUP (ORDER BY X) | Tính giá trị của hàm phân phối (tích lũy) của x trong X |
DENSE_RANK(x) WITHIN GROUP (ORDER BY X) | Xác định vị trí (thứ hạng) của x trong X |
MAX(X) | Tìm giá trị lớn nhất của X |
MIN(X) | Tìm giá trị nhỏ nhất của X |
PERCENT_RANK(x) WITHIN GROUP (ORDER BY X) | Tích bách phân vị của giá trị x trong tất cả các giá trị của X |
PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY X) | Xác định giá trị ở bách phân vị p (số thập phân) trong X với giả sử là X có phân phối liên tục |
PERCENTILE_DISC(p) WITHIN GROUP (ORDER BY X) | Xác định giá trị ở bách phân vị p (số thập phân) trong X với giả sử là X có phân phối gián đoạn |
RANK(x) WITHIN GROUP (ORDER BY X) | Xác định vị trí (thứ hạng) của x trong X |
REGR_AVGX(Y, X) | Tính trị trung bình của biến độc lập |
REGR_AVGY(Y, X) | Tính trị trung bình của biến phụ thuộc |
REGR_COUNT(Y, X) | Xác định số cặp phần tử (x,y) còn lại sau khi đã loại bỏ các giá trị NULL. |
REGR_INTERCEPT(Y, X) | Xác định hệ số b trong phương trình hồi quy tuyến tính Y = aX + b |
REGR_R2(Y, X) | Xác định hệ số R2 của hồi quy tuyến tính giữa Y và X |
REGR_SLOPE(Y, X) | Xác định hệ số a trong phương trình hồi quy tuyến tính Y = aX + b |
REGR_SXX(Y, X) | Tính tổng bình phương của biến độc lập X |
REGR_SXX(Y, X) | Tính tổng của các tích X.Y |
REGR_SYY(Y, X) | Tính tổng bình phương của biến phụ thuộc Y |
STDDEV_POP(X) | Tính độ lệch chuẩn của tổng thể |
STDDEV_(X) | Tính độ lệch chuẩn của mẫu |
SUM(X) | Tính tổng số |
VAR_POP(X) | Tính phương sai của tổng thể |
VAR_SAMP(X) | Tính phương sai của mẫu |
Bảng 3.3d liệt kê một số hàm về thời gian theo tiêu chuẩn ANSI.
Tên hàm | Thực hiện |
---|---|
CURRENT_DATE | Xác định ngày hiện hành (không có đối số) |
CURRENT_TIME | Xác định giờ hiện hành (không có đối số) |
CURRENT_TIMESTAMP | Xác định ngày giờ hiện hành (không có đối số) |
EXTRACT( p FROM ng) | Trích thành phần p từ ngày giờ ng |
Ghi chú : Một số hàm được liệt kê ở các phần trước, như MAX, MIN, cũng có thể áp dụng cho dữ liệu thời gian.
Bảng 3.3e liệt kê một số hàm có công dụng chuyên biệt
Tên hàm | Thực hiện |
---|---|
CAST(x AS kdl [(n)]) | Chuyển x sang kiểu dữ liêu kdl |
CHAR(n1, n2, ...) | Tạo chuỗi ký tự bằng cách chuyển các số nguyên n1, n2, ... thành các ký tự tương ứng |
CONVERT(ch USING hkt) | Chuyển chuỗi ký tự ch sang hệ ký tự hkt |
LOAD_FILE(tt) | Đọc tập tin có tên là tt và ghi vào một chuỗi ký tự. |
Trang web này được cập nhật lần cuối ngày 26/11/2018
Cơ sở dữ liệu
Các chuyên đề
Xử lý dữ liệu
Ma trận
R