一、字符串处理函数
1. CONCAT
:拼接字符串
语法:CONCAT(string1, string2, ..., stringN)
实例:
SELECT CONCAT('Hello', ' ', 'World') AS Result;
输出:
Result
-------------
Hello World
2. SUBSTRING
:截取子字符串
语法:SUBSTRING(string, start, length)
实例:
SELECT SUBSTRING('SQL Server', 5, 6) AS Result;
输出:
Result
-------
Server
3. CHARINDEX
:查找子字符串位置
语法:CHARINDEX(substring, string, [start])
实例:
SELECT CHARINDEX('@', 'user@example.com') AS Position;
输出:
Position
---------
5
4. REPLACE
:替换字符串内容
语法:REPLACE(input_string, old_substring, new_substring)
实例:
SELECT REPLACE('2023-01-01', '-', '/') AS FormattedDate;
输出:
FormattedDate
-------------
2023/01/01
二、数值计算函数
1. ROUND
:四舍五入
语法:ROUND(number, decimal_places)
实例:
SELECT ROUND(123.4567, 2) AS RoundedValue;
输出:
RoundedValue
------------
123.4600
2. ABS
:取绝对值
语法:ABS(numeric_expression)
实例:
SELECT ABS(-15.5) AS AbsoluteValue;
输出:
AbsoluteValue
-------------
15.5
3. RAND
:生成随机数
语法:RAND([seed])
实例:
SELECT RAND() AS RandomValue; -- 0~1 之间的随机数
输出(示例):
RandomValue
-----------
0.715436
三、日期与时间函数
1. GETDATE
:获取当前日期时间
语法:GETDATE()
实例:
SELECT GETDATE() AS CurrentDateTime;
输出(示例):
CurrentDateTime
---------------------
2023-10-05 14:30:45
2. DATEDIFF
:计算日期差值
语法:DATEDIFF(datepart, startdate, enddate)
实例:
SELECT DATEDIFF(DAY, '2023-01-01', '2023-10-05') AS DaysDiff;
输出:
DaysDiff
--------
277
3. DATEADD
:日期加减
语法:DATEADD(datepart, number, date)
实例:
SELECT DATEADD(MONTH, 3, '2023-10-05') AS NewDate;
输出:
NewDate
---------
2024-01-05
四、逻辑与条件函数
1. CASE
:条件分支
语法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
实例:
SELECT
ProductName,
CASE
WHEN Price > 100 THEN 'High'
WHEN Price > 50 THEN 'Medium'
ELSE 'Low'
END AS PriceCategory
FROM Products;
输出(示例):
ProductName PriceCategory
---------------------------
Laptop High
Mouse Low
Monitor Medium
2. COALESCE
:返回第一个非 NULL 值
语法:COALESCE(expression1, expression2, ..., expressionN)
实例:
SELECT COALESCE(NULL, 'Fallback Value', 'Another Value') AS Result;
输出:
Result
-------------
Fallback Value
3. IIF
:简化条件判断
语法:IIF(condition, true_value, false_value)
实例:
SELECT IIF(10 > 5, 'Yes', 'No') AS Result;
输出:
Result
------
Yes
五、聚合与窗口函数
1. SUM
:求和
语法:SUM(column)
实例:
SELECT SUM(SalesAmount) AS TotalSales
FROM Sales;
输出(示例):
TotalSales
----------
120000.00
2. ROW_NUMBER
:生成行号
语法:
ROW_NUMBER() OVER (ORDER BY column)
实例:
SELECT
ProductID,
ProductName,
ROW_NUMBER() OVER (ORDER BY Price DESC) AS Rank
FROM Products;
输出(示例):
ProductID ProductName Rank
-----------------------------
101 Laptop 1
103 Monitor 2
102 Mouse 3
3. STRING_AGG
:分组拼接字符串
语法:STRING_AGG(expression, separator) [WITHIN GROUP (ORDER BY column)]
实例:
SELECT
DepartmentID,
STRING_AGG(EmployeeName, ', ') AS Employees
FROM Employees
GROUP BY DepartmentID;
输出(示例):
DepartmentID Employees
------------------------
1 Alice, Bob
2 Charlie, David
六、系统与元数据函数
1. DB_NAME
:获取当前数据库名
语法:DB_NAME()
实例:
SELECT DB_NAME() AS CurrentDatabase;
输出:
CurrentDatabase
---------------
AdventureWorks
2. OBJECT_ID
:获取对象 ID
语法:OBJECT_ID('object_name')
实例:
SELECT OBJECT_ID('dbo.Products') AS TableObjectID;
输出(示例):
TableObjectID
-------------
123456789
七、JSON 处理函数(SQL Server 2016+)
1. JSON_VALUE
:提取 JSON 值
语法:JSON_VALUE(json_string, '$.path')
实例:
DECLARE @json NVARCHAR(MAX) = '{"name": "Alice", "age": 30}';
SELECT JSON_VALUE(@json, '$.name') AS Name;
输出:
Name
-----
Alice
2. JSON_MODIFY
:修改 JSON 内容
语法:JSON_MODIFY(json_string, '$.path', new_value)
实例:
DECLARE @json NVARCHAR(MAX) = '{"name": "Alice"}';
SELECT JSON_MODIFY(@json, '$.age', 30) AS UpdatedJSON;
输出:
UpdatedJSON
------------------------
{"name": "Alice", "age": 30}