一、字符串處理函數
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 result1WHEN condition2 THEN result2ELSE 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}