目录
引言
SQL Server内置了数百个函数,覆盖数据计算、转换、分析等多种场景。本文作为速查手册,按功能分类整理常用函数及精简示例,助您快速定位工具。每个函数的详细解析将在后续专题文章中展开。
一、聚合函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
SUM() | SELECT SUM(Sales) FROM Orders; | 计算数值列总和 |
AVG() | SELECT AVG(Salary) FROM Employees; | 计算平均值 |
COUNT() | SELECT COUNT(*) FROM Users; | 统计行数 |
MIN()/MAX() | SELECT MIN(Price), MAX(Price) FROM Products; | 找最小/最大值 |
STDEV() | SELECT STDEV(Score) FROM Exams; | 计算标准差 |
二、字符串函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
LEFT()/RIGHT() | SELECT LEFT('SQLServer', 3); -- 'SQL' | 截取左/右侧字符串 |
SUBSTRING() | SELECT SUBSTRING('Hello', 2, 3); -- 'ell' | 截取子串 |
LEN() | SELECT LEN('Database'); -- 8 | 计算字符串长度 |
REPLACE() | SELECT REPLACE('a-b-c', '-', '/'); -- 'a/b/c' | 替换字符串 |
CHARINDEX() | SELECT CHARINDEX('@', 'user@example.com'); -- 5 | 查找子串位置 |
三、日期时间函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
GETDATE() | SELECT GETDATE(); -- 当前日期时间 | 获取当前系统时间 |
DATEADD() | SELECT DATEADD(MONTH, 1, '2024-01-01'); -- 2024-02-01 | 日期加减 |
DATEDIFF() | SELECT DATEDIFF(DAY, '2023-01-01', GETDATE()); | 计算日期差 |
DATEPART() | SELECT DATEPART(YEAR, GETDATE()); -- 2024 | 提取日期部分 |
FORMAT() | SELECT FORMAT(GETDATE(), 'yyyy-MM-dd'); | 格式化日期 |
四、数学函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
ROUND() | SELECT ROUND(123.4567, 2); -- 123.46 | 四舍五入 |
ABS() | SELECT ABS(-15); -- 15 | 绝对值计算 |
POWER() | SELECT POWER(2, 3); -- 8 | 幂运算 |
RAND() | SELECT RAND(); -- 0~1随机数 | 生成随机数 |
SQRT() | SELECT SQRT(16); -- 4 | 平方根 |
五、类型转换函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
CAST() | SELECT CAST(123 AS VARCHAR); -- '123' | 类型转换 |
CONVERT() | SELECT CONVERT(VARCHAR, GETDATE(), 23); -- '2024-03-15' | 带格式转换 |
PARSE() | SELECT PARSE('2024/03' AS DATE USING 'ja-JP'); | 本地化解析 |
TRY_CAST() | SELECT TRY_CAST('ABC' AS INT); -- NULL | 安全转换(失败返回NULL) |
六、逻辑与条件函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
IIF() | SELECT IIF(Score >=60, '及格', '不及格'); | 简单条件判断 |
CASE表达式 | SELECT CASE WHEN Age<18 THEN '未成年' ELSE '成年' END; | 多条件分支 |
COALESCE() | SELECT COALESCE(NickName, RealName); | 返回第一个非NULL值 |
ISNULL() | SELECT ISNULL(Phone, '未知'); | 替换NULL值 |
七、系统与元数据函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
DB_ID() | SELECT DB_ID('master'); -- 1 | 获取数据库ID |
OBJECT_NAME() | SELECT OBJECT_NAME(OBJECT_ID('Users')); -- 'Users' | 获取对象名称 |
HOST_NAME() | SELECT HOST_NAME(); -- 计算机名 | 获取主机名 |
IDENT_CURRENT() | SELECT IDENT_CURRENT('Users'); | 获取表当前标识值 |
八、JSON与XML函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
JSON_VALUE() | SELECT JSON_VALUE('{"name":"John"}', '$.name'); -- 'John' | 提取JSON值 |
OPENJSON() | SELECT * FROM OPENJSON('{"age":30}'); | 解析JSON为表格 |
XML_VALUE() | SELECT XML_VALUE('<book>SQL</book>', '/book'); -- 'SQL' | 提取XML节点值 |
九、窗口函数(需OVER子句)
| 函数 | 示例 | 功能说明 |
|---|---|---|
ROW_NUMBER() | SELECT ROW_NUMBER() OVER(ORDER BY Sales DESC); | 行号 |
LAG()/LEAD() | SELECT LAG(Price) OVER(ORDER BY Date); | 访问前/后行数据 |
RANK() | SELECT RANK() OVER(PARTITION BY Dept ORDER BY Salary); | 排名(允许并列) |
NTILE() | SELECT NTILE(4) OVER(ORDER BY Score); | 数据分桶 |
十、安全函数
| 函数 | 示例 | 功能说明 |
|---|---|---|
CURRENT_USER | SELECT CURRENT_USER; -- 当前登录用户 | 获取当前用户 |
HAS_PERMS_BY_NAME() | SELECT HAS_PERMS_BY_NAME('Sales', 'SELECT'); -- 1/0 | 权限检查 |
ENCRYPTBYPASSPHRASE() | SELECT ENCRYPTBYPASSPHRASE('key', 'data'); | 加密数据 |
HASHBYTES() | SELECT HASHBYTES('SHA2_256', 'text'); | 计算哈希值 |
结语
本文列举了SQL Server中9大类常用函数的快速使用示例,可作为日常开发的速查手册。后续将针对每类函数发布详细解析文章,深入讲解参数配置、性能差异及实战陷阱。

640

被折叠的 条评论
为什么被折叠?



