SQL Server 常用函数

一、字符串处理函数

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}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值