logo xDuLieu.com

Trang trướcPhụ lục 3.3 Một số hàm tạo sẵn trong SQL 

Khái quát

 

Để 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:

  • hàm có đối số là một tập hợp của nhiều giá trị (aggregate function)
  • hàm có đối số là một giá trị (scalar function)

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ể.


Hàm có đối số là một số

 

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.

Bảng 3.3a Một số hàm có đối số là một giá trị số
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ố.


Hàm có đối số là một chuỗi ký tự

 

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.

Bảng 3.3a Một số hàm có đối số là một chuỗi ký tự
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ự.


Hàm có đối số là tập hợp giá trị

 

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.

Bảng 3.3c Một số hàm có đối số là một tập hợp giá trị
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

Hàm về thời gian

 

Bảng 3.3d liệt kê một số hàm về thời gian theo tiêu chuẩn ANSI.

Bảng 3.3d Một số hàm về thời gian
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.


Các hàm chuyên biệt

 

Bảng 3.3e liệt kê một số hàm có công dụng chuyên biệt

Bảng 3.3e 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 trướcVề đầu chương 


Trang web này được cập nhật lần cuối ngày 26/11/2018