1. 彙總函數
AVG, COUNT, MAX, MIN, SUM:忽略 NULL;可搭配 DISTINCT 去重;常與 GROUP BY 共用。
2. 數學函數
| 函數 | 說明 | 範例 |
| SQRT(n) | 平方根 | SQRT(16)=4 |
| CEILING(n) | 大於等於 n 的最小整數 | CEILING(3.2)=4 |
| FLOOR(n) | 小於等於 n 的最大整數 | FLOOR(3.8)=3 |
| ROUND(m,n) | 四捨五入保留 n 位小數 | ROUND(3.146,2)=3.15 |
| ABS(n) | 絕對值 | ABS(-5)=5 |
| SIGN(n) | 正負號:>0→1, =0→0, <0→-1 | SIGN(-3)=-1 |
| PI() | 圓周率 | 3.14159... |
| RAND([seed]) | 0~1 隨機數,種子固定則序列固定 | RAND(10) |
3. 字串函數
| 函數 | 說明 | 範例 |
| ASCII('abc') | 首字元 ASCII 碼 | 97 |
| CHAR(97) | ASCII 轉字元 | 'a' |
| LOWER/UPPER | 大小寫轉換 | |
| STR(num, len, dec) | 數字轉字串,指定總長與小數位 | STR(123.456,8,2)=' 123.46' |
| LTRIM/RTRIM | 移除左右空白 | |
| LEFT/RIGHT/SUBSTRING | 截取左/右/指定位置長度 | SUBSTRING('abcde',2,3)='bcd' |
| CHARINDEX(sub, str) | 尋找子字串首次位置,無則 0 | CHARINDEX('c','abcde')=3 |
| PATINDEX('%pat%', expr) | 支援萬用字元搜尋 | |
| REPLICATE('x',3) | 重複字串 | 'xxx' |
| REVERSE(str) | 反轉字串 | REVERSE('abc')='cba' |
| REPLACE(str, old, new) | 取代字串 | |
| SPACE(n) | 產生 n 個空白 | |
| STUFF(str, start, len, ins) | 刪除並插入 | STUFF('abcdef',2,3,'ijkl')='aijklf' |
4. 型別轉換
CAST(expr AS type):ANSI 標準。CAST(ytd_sales AS CHAR(20))
CONVERT(type, expr [, style]):SQL Server 專用,日期格式需用 style 代碼。
5. 日期函數
| 函數 | 說明 | 範例 |
| DAY/ MONTH/ YEAR(date) | 取日/月/年 | |
| DATEADD(part, n, date) | 日期加減 | DATEADD(day,1,GETDATE()) 明天 |
| DATEDIFF(part, d1, d2) | 兩日期差值 (d2-d1) | DATEDIFF(day,'2023-01-01',GETDATE()) |
| DATENAME(part, date) | 取部分回傳字串 | DATENAME(month,GETDATE())='January' |
| DATEPART(part, date) | 取部分回傳整數 | DATEPART(month,GETDATE())=1 |
| GETDATE() | 目前日期時間 | |
part 可為:year, quarter, month, dayofyear, day, week, hour, minute, second 等。
6. 系統函數
COL_LENGTH('table','col'):欄位定義長度
COL_NAME(OBJECT_ID('table'), colid):取得欄位名稱
DATALENGTH(expr):資料實際位元組長度
DB_ID():目前資料庫 ID