Các hàm có sẵn trong SQL


Các bạn học SQL nhưng có thể chưa hiểu hết tác dụng cũng như cách sử dụng của câu lệnh và hàm mình dùng. Đoạn code dưới đây sẽ giúp các bạn hiểu hơn để các thể sử dụng tốt chúng.

1768.sql_logo-695x255.png (695×255)
1/ Hàm Aggregate - Hàm tập hợp : Dùng hỗ trợ việc tập hợp một lượng lớn dữ liệu .

sum(column_name) : Trả về tồng của tập hợp giá trị trong cột.
Ví dụ : Code:select sum(Quantity) as Total from WidgetOrders

avg(column_name) : Trả về giá trị trung bình của tập hợp giá trị trong cột .
Ví dụ : Code:select avg ( UnitPrice * Quantity ) as ' AvegagePrice ' from WidgetOrders where Continent = ' North America '

count : Đếm số lượng trong bảng thoả mãn điều kiện.
Ví dụ : Code:select count as ' Number of Large Orders ' from WidgetOrders where Quantity > 100

max(column_name) : Trả về giá trị lớn nhất trong một tập giá trị.
Ví dụ : Code:select max (Quantity * UnitPrice) as ' Largest Order ' from WigetOrders

min(column_name) : Trả về giá trị nhỏ nhất trong một tập giá trị .
Ví dụ : Code:select min ( Quantity * UnitPrice ) as ' Smallet Order ' from WidgetOrders

2/ Hàm Conversion - Hàm chuyển đổi : Dùng chuyển giá trị từ một kiểu dữ liệu sang kiểu dữ liệu khác . Nó còn được dùng để định dạng ngày tháng . SQL cung cấp hàm chuyển đổi duy nhất là CONVERT().

convert (datatype (length) , expression , style)
Ví dụ : Code:select ' empid : ' +convert (char (4) , employeeid) from employees

3/ Hàm date - Hàm ngày tháng : Dùng thao tác với các giá trị ngày tháng.

Chữ viết tắt và giá trị :
Hour = hh ( 0 - 23 ) , Minute = Mi ( 0 - 59 ) , Second = Ss ( 0 - 59 ), Millisecond = Ms ( 0 - 999 ) , Day of year = Dy ( 1 - 366 ) , Day = Dd ( 1 - 31) , Year = yy ( 1753 - 9999 ).

getdate : Ngày hiện tại.
Ví dụ : Code:select getdate()

dateadd ( datepart , number , date ) : Giá trị ngày cộng với một số.
Ví dụ : Code:select dateadd ( mm, 4 , ' 01/01/99 ' )
Thêm vào trường mm (tháng) với giá trị 4 . Kết quả sẽ là : 05/01/99

datediff (datepart , date 1 ,date 2) : Giá trị chênh lệch giữa hai ngày .
Ví dụ : Code:select datediff ( mm , ' 01/01/99 ' , ' 05/01/99 ' )
Trả về kết quả là : 4 . So sánh giữa hai trường tháng .

datename (datepart , date ) : Giá trị ngày định dạng tương ứng .
Ví dụ : Code:select datename (dw , ' 01/01/2000 ' )
Kết quả sẽ trả về Saturday.

datepart ( datepart , date )
Ví dụ : Code:select datepart ( day , ' 01/15/2000 ' )
Trả về kết quả giá trị ngày là 15.

4/ Các hàm toán học trong SQL

abs (num_expr) : Giá trị tuyệt đối của một số .
Ví dụ : Code:select abs(- 43)
Kết quả trả về là : 43

floor (num_expr) : Số nguyên lớn nhất nhỏ hơn hoặc bằng giá trị .
Ví dụ : Code:select floor ( 43,5 )
Kết quả trả về là : 43

ceiling (num_expr) : Số nguyên lớn nhất lớn hơn hoặc bằng giá trị .
Ví dụ : Code:select ceiling ( 43,5 )
Kết quả trả về là : 44

power (num_expr, y) : Luỹ thừa của số y trong biểu thức
Ví dụ : Code:select power ( 5 , 2 )
Kết quả trả về 5 luỹ thừa 2 bằng 25

round (num_expr , length) : Làm tròn giá trị số trong biểu thức.
Ví dụ : Code:select round ( 43.54321 , 1 )
Kết quả trả về là : 43.5

sign (num_expr ) : Trả về giá trị +1 cho số dương và - 1 cho số âm và 0 cho số 0
Ví dụ : Code:select sign ( - 43 )
Trả về giá trị là : - 1.

Sqrt ( float_expr ) : Trả về giá trị căn bậc 2 của biểu thức .
Vi dụ : Code:select sqrt(9)
Kết quả trả về là : 3

Date Time Format

Các hàm Date Time Format thường hay sử dụng trong lập trình SQL Server cần thiết:
sqlconversion4.gif (500×231)
Format
Query
USA mm/dd/yy
select convert(varchar, getdate(), 1)
ANSI yy.mm.dd
select convert(varchar, getdate(), 2)
British/French dd/mm/yy
select convert(varchar, getdate(), 3)
German dd.mm.yy
select convert(varchar, getdate(), 4)
Italian dd-mm-yy
select convert(varchar, getdate(), 5)
dd mon yy
select convert(varchar, getdate(), 6)
Mon dd, yy
select convert(varchar, getdate(), 7)
USA mm-dd-yy
select convert(varchar, getdate(), 10)
JAPAN yy/mm/dd
select convert(varchar, getdate(), 11)
ISO yymmdd
select convert(varchar, getdate(), 12)
mon dd yyyy hh:miAM (or PM)
select convert(varchar, getdate(), 100)
mm/dd/yyyy
select convert(varchar, getdate(), 101)
yyyy.mm.dd
select convert(varchar, getdate(), 102)
dd/mm/yyyy
select convert(varchar, getdate(), 103)
dd.mm.yyyy
select convert(varchar, getdate(), 104)
dd-mm-yyyy
select convert(varchar, getdate(), 105)
dd mon yyyy
select convert(varchar, getdate(), 106)
Mon dd, yyyy
select convert(varchar, getdate(), 107)
hh:mm:ss
select convert(varchar, getdate(), 108)
Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM)
select convert(varchar, getdate(), 109)
mm-dd-yyyy
select convert(varchar, getdate(), 110)
yyyy/mm/dd
select convert(varchar, getdate(), 111)
yyyymmdd
select convert(varchar, getdate(), 112)
Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h)
select convert(varchar, getdate(), 113) or select convert(varchar, getdate(), 13)
hh:mi:ss:mmm(24h)
select convert(varchar, getdate(), 114)



Làm tròn datetime

select DateAdd(Day, Datediff(Day,0, GetDate()), 0)

kq: 2015-07-09 00:00:00.000

select DateAdd(Day, Datediff(Day,0, GetDate()), 0)

kq: 2015-07-09

select cast(floor(cast(getdate() as float)) as datetime)
kq: 2015-07-09 00:00:00.000

Lấy bản ghi 1 cách ngẫu nhiên random / Kiểm tra sự tồn tại


SELECT TOP 1 column FROM table

ORDER BY NEWID() select_random_record_from_a_table_in_sql_server2.png (499×319)

Ví dụ: SELECT TOP 5 City_name FROM vw_ttv_mtd

ORDER BY NEWID()
Kiểm tra sự tồn tại
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MDF_Summary]') AND type in (N'U'))
print('ok')
else
print('ok2')

IF  EXISTS (SELECT * FROM vw_ttv_mtd where city_name='linz')
drop table table_1
else
print('ok2')