字串函數
| 函數 | 用途 | 範例 | 結果 |
| SUBSTRING(str, start, len) | 擷取子字串 | SUBSTRING('abcdef', 2, 3) | bcd |
| LEFT(str, n) / RIGHT(str, n) | 左/右邊 n 字元 | LEFT('abcdef', 3) | abc |
| LTRIM/RTRIM | 移除前導/尾隨空白 | LTRIM(' abc') | abc |
| REPLACE(str, old, new) | 字串取代 | REPLACE('a.gif', '.gif', '.jpg') | a.jpg |
| CHARINDEX(sub, str) | 尋找子字串位置(1-based) | CHARINDEX('bc', 'abcdef') | 2 |
| PATINDEX('%pattern%', str) | 支援萬用字元搜尋 | PATINDEX('%[0-9]%', 'abc123') | 4 |
| REPLICATE(str, n) | 重複字串 | REPLICATE('ab', 3) | ababab |
| REVERSE(str) | 反轉字串 | REVERSE('abc') | cba |
| STUFF(str, start, len, new) | 刪除並插入 | STUFF('abcdef', 2, 3, 'xyz') | axyzef |
| SPACE(n) | 產生 n 個空白 | SPACE(3) | |
| DATALENGTH(expr) | 位元組長度 | DATALENGTH('abc') | 3 |
日期函數
| 函數 | 用途 | 範例 |
| GETDATE() | 目前日期時間 | 2024-01-15 14:30:00.000 |
| DATEADD(datepart, n, date) | 日期加減 | DATEADD(day, 1, GETDATE()) → 明天 |
| DATEDIFF(datepart, d1, d2) | 日期差距 | DATEDIFF(day, '2024-01-01', GETDATE()) |
| DATEPART(datepart, date) | 取得部分(整數) | DATEPART(month, GETDATE()) → 1 |
| DATENAME(datepart, date) | 取得部分(字串) | DATENAME(weekday, GETDATE()) → Monday |
| DAY/ MONTH/ YEAR(date) | 簡寫取日/月/年 | MONTH(GETDATE()) |
datepart 常用值:year/yy, quarter/qq, month/mm, dayofyear/dy, day/dd, week/wk, hour/hh, minute/mi, second/ss
數學函數
| 函數 | 說明 | 範例 |
| ABS(n) | 絕對值 | ABS(-5) = 5 |
| CEILING(n) | 無條件進位 | CEILING(3.2) = 4 |
| FLOOR(n) | 無條件捨去 | FLOOR(3.8) = 3 |
| ROUND(n, d) | 四捨五入到 d 位小數 | ROUND(3.14159, 2) = 3.14 |
| SIGN(n) | 正負號:1/0/-1 | SIGN(-10) = -1 |
| PI() | 圓周率 | 3.14159265358979 |
| RAND([seed]) | 0~1 隨機數 | RAND() |
型別轉換
| 函數 | 語法 | 範例 |
| CAST | CAST(expr AS type) | CAST(123 AS VARCHAR(10)) → '123' |
| CONVERT | CONVERT(type, expr, style) | CONVERT(VARCHAR, GETDATE(), 120) → '2024-01-15 14:30:00' |
| STR | STR(num, len, dec) | STR(123.456, 8, 2) → ' 123.46' |
統計彙總函數
AVG, COUNT, MAX, MIN, SUM, COUNT_BIG, STDEV, VAR, GROUPING, CHECKSUM_AGG
系統函數精選
| 函數 | 用途 | 範例 |
| OBJECT_ID('name') | 取得物件 ID | OBJECT_ID('dbo.Orders') |
| COL_NAME(table_id, col_id) | 取得欄位名稱 | COL_NAME(OBJECT_ID('Employees'), 1) |
| COL_LENGTH('table', 'col') | 取得欄位定義長度 | COL_LENGTH('Employees', 'LastName') |
| DB_NAME([db_id]) | 取得資料庫名稱 | DB_NAME() |
| USER_NAME([uid]) | 取得使用者名稱 | USER_NAME() |
| HOST_NAME() | 用戶端主機名稱 | HOST_NAME() |
| APP_NAME() | 應用程式名稱 | APP_NAME() |
| ISNULL(expr, val) | NULL 替代值 | ISNULL(Commission, 0) |
| COALESCE(v1, v2, ...) | 回傳第一個非 NULL | COALESCE(Phone, Mobile, 'N/A') |
| CASE / IIF / CHOOSE | 條件運算 | IIF(Score >= 60, 'Pass', 'Fail') |
實戰技巧:將 .gif 批次改為 .jpg
UPDATE Products
SET ImagePath = SUBSTRING(ImagePath, 1, DATALENGTH(ImagePath) - 3) + 'jpg'
WHERE ImagePath LIKE '%.gif'