SQL Server 提供了丰富的内置函数,用于处理数据、执行计算、格式化输出、日期操作等。以下是一些常用的 SQL Server 函数,按类别进行分类:
1. 聚合函数
这些函数用于对一组值进行计算并返回单个值。
-
COUNT()
:计算行数。SELECT COUNT(*) FROM Employees;
-
SUM()
:计算数值列的总和。SELECT SUM(Quantity) FROM Orders;
-
AVG()
:计算数值列的平均值。SELECT AVG(Salary) FROM Employees;
-
MIN()
:返回列中的最小值。SELECT MIN(Salary) FROM Employees;
-
MAX()
:返回列中的最大值。SELECT MAX(Salary) FROM Employees;
2. 字符串函数
这些函数用于操作和处理字符串数据。
-
CONCAT()
:连接两个或多个字符串。SELECT CONCAT(FirstName, ' ', LastName) AS FullName FROM Employees;
-
SUBSTRING()
:提取子字符串。SELECT SUBSTRING(ProductName, 1, 5) FROM Products;
-
LEN()
:返回字符串的长度。SELECT LEN(ProductName) FROM Products;
-
LOWER()
:将字符串转换为小写。SELECT LOWER(ProductName) FROM Products;
-
UPPER()
:将字符串转换为大写。SELECT UPPER(ProductName) FROM Products;
-
TRIM()
:去除字符串两端的空格。SELECT TRIM(ProductName) FROM Products;
-
REPLACE()
:替换字符串中的指定字符。SELECT REPLACE(ProductName, 'old', 'new') FROM Products;
3. 日期和时间函数
这些函数用于处理日期和时间数据。
-
GETDATE()
:返回当前日期和时间。SELECT GETDATE();
-
DATEADD()
:在日期上添加指定的时间间隔。SELECT DATEADD(day, 5, OrderDate) FROM Orders;
-
DATEDIFF()
:计算两个日期之间的差异。SELECT DATEDIFF(day, OrderDate, ShippedDate) FROM Orders;
-
YEAR()
:提取日期的年份。SELECT YEAR(OrderDate) FROM Orders;
-
MONTH()
:提取日期的月份。SELECT MONTH(OrderDate) FROM Orders;
-
DAY()
:提取日期的日。SELECT DAY(OrderDate) FROM Orders;
4. 数学函数
这些函数用于执行各种数学计算。
-
ABS()
:返回数值的绝对值。SELECT ABS(-10);
-
CEILING()
:返回大于或等于指定数值的最小整数。SELECT CEILING(4.3);
-
FLOOR()
:返回小于或等于指定数值的最大整数。SELECT FLOOR(4.7);
-
POWER()
:返回指定数值的幂次方。SELECT POWER(2, 3);
-
ROUND()
:将数值四舍五入到指定的小数位数。SELECT ROUND(123.456, 2);
-
SQRT()
:返回数值的平方根。SELECT SQRT(16);
5. 转换函数
这些函数用于数据类型的转换。
-
CAST()
:将一种数据类型转换为另一种数据类型。SELECT CAST('123' AS INT);
-
CONVERT()
:与 CAST 类似,但提供了更多的格式化选项。SELECT CONVERT(VARCHAR, GETDATE(), 101);
6. 逻辑函数
这些函数用于执行逻辑操作。
-
ISNULL()
:如果表达式为 NULL,则返回指定的值。SELECT ISNULL(Total, 0) FROM Orders;
-
IIF()
:根据条件返回两个值之一。SELECT IIF(Salary > 5000, 'High', 'Low') FROM Employees;
7. 系统函数
这些函数用于获取系统信息。
-
USER_NAME()
:返回当前用户名。SELECT USER_NAME();
-
HOST_NAME()
:返回客户端的主机名。SELECT HOST_NAME();
-
DB_NAME()
:返回当前数据库的名称。SELECT DB_NAME();
8. 排名函数
这些函数用于对结果集进行排名和排序。
-
ROW_NUMBER()
:为每一行分配一个唯一的行号。SELECT ROW_NUMBER() OVER (ORDER BY Salary DESC) AS RowNum, FirstName, Salary FROM Employees;
-
RANK()
:为每一行分配一个排名,相同的值共享相同的排名。SELECT RANK() OVER (ORDER BY Salary DESC) AS Rank, FirstName, Salary FROM Employees;
-
DENSE_RANK()
:与 RANK 类似,但不跳过排名。SELECT DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank, FirstName, Salary FROM Employees;
9. 窗口函数
窗口函数用于执行跨越一组行的计算。
-
SUM()
OVER:计算窗口内的总和。SELECT FirstName, Salary, SUM(Salary) OVER (PARTITION BY DepartmentID) AS DeptTotalSalary FROM Employees;
-
AVG()
OVER:计算窗口内的平均值。SELECT FirstName, Salary, AVG(Salary) OVER (PARTITION BY DepartmentID) AS DeptAvgSalary FROM Employees;
结论
SQL Server 提供了丰富的内置函数,涵盖了数据处理、计算、日期操作、字符串处理等多个方面。掌握这些函数可以帮助你更高效地处理和分析数据