文章目录
- 
- 前言
 - 
- [1. 数据类型转换函数](#1. 数据类型转换函数)
 - [2. 数学函数](#2. 数学函数)
 - [3. 日期和时间函数](#3. 日期和时间函数)
 - 
- GETDATE()
 - SYSDATETIME()
 - DATEADD()
 - DATEDIFF()
 - [YEAR()、MONTH() 和 DAY()](#YEAR()、MONTH() 和 DAY())
 - FORMAT()
 
 - [4. 条件处理函数](#4. 条件处理函数)
 - 总结
 
 
 
前言
在SQL Server中,数据处理函数是开发人员操作数据库的强大工具。通过这些函数,我们可以高效地对数据进行处理和转换,满足不同的业务需求。无论是进行类型转换、数学运算,还是处理日期时间,SQL Server 都提供了丰富的内置函数。本篇文章将重点介绍 SQL Server 中的几类常用数据处理函数,并通过实例展示如何高效使用它们。
1. 数据类型转换函数
SQL Server 提供了多种函数,用于在不同数据类型之间进行转换。常见的转换函数包括 CAST()、CONVERT() 和 TRY_CAST()。
CAST()
CAST() 函数用于将表达式转换为指定的数据类型。它的语法非常直观,适用于所有数据类型的转换。
            
            
              mssql
              
              
            
          
          SELECT CAST('2024-12-03' AS DATETIME) AS ConvertedDate;
-- 将字符串转换为 DATETIME 类型
        CONVERT()
CONVERT() 函数与 CAST() 类似,但它提供了更多的灵活性,尤其是在日期和时间类型的转换上,能够指定日期格式。
            
            
              mssql
              
              
            
          
          SELECT CONVERT(DATETIME, '2024-12-03', 120) AS ConvertedDate;
-- 将字符串转换为 DATETIME 类型,并指定日期格式
        TRY_CAST() 和 TRY_CONVERT()
TRY_CAST() 和 TRY_CONVERT() 是类型转换的安全版本。如果转换失败,它们会返回 NULL 而不会抛出错误。
            
            
              mssql
              
              
            
          
          SELECT TRY_CAST('abc' AS INT) AS TryCastResult;
-- 返回 NULL,因为 'abc' 无法转换为 INT 类型
        2. 数学函数
SQL Server 提供了多个数学函数,帮助我们进行常见的数学运算,如求绝对值、四舍五入、计算平方根等。
ABS()
ABS() 函数返回数字的绝对值。
            
            
              mssql
              
              
            
          
          SELECT ABS(-50) AS AbsoluteValue;
-- 返回 50
        CEILING()
CEILING() 函数返回大于或等于数字的最小整数。
            
            
              mssql
              
              
            
          
          SELECT CEILING(5.12) AS CeilingValue;
-- 返回 6
        FLOOR()
FLOOR() 函数返回小于或等于数字的最大整数。
            
            
              mssql
              
              
            
          
          SELECT FLOOR(5.89) AS FloorValue;
-- 返回 5
        ROUND()
ROUND() 函数将数字四舍五入到指定的小数位。
            
            
              mssql
              
              
            
          
          SELECT ROUND(123.4567, 2) AS RoundedValue;
-- 返回 123.46
        POWER()
POWER() 函数用于计算一个数的指定次方。
            
            
              mssql
              
              
            
          
          SELECT POWER(2, 3) AS PowerValue;
-- 返回 8 (2 的 3 次方)
        SQRT()
SQRT() 函数用于计算一个数的平方根。
            
            
              mssql
              
              
            
          
          SELECT SQRT(16) AS SquareRoot;
-- 返回 4
        3. 日期和时间函数
SQL Server 中的日期和时间函数提供了强大的处理能力,可以帮助开发人员对日期和时间进行提取、格式化、加减等操作。
GETDATE()
GETDATE() 函数返回当前的日期和时间。
            
            
              mssql
              
              
            
          
          SELECT GETDATE() AS CurrentDateTime;
-- 返回当前的日期和时间,例如:2024-12-03 13:45:00
        SYSDATETIME()
SYSDATETIME() 返回当前系统的日期和时间,精度为毫秒。
            
            
              mssql
              
              
            
          
          SELECT SYSDATETIME() AS SysDateTime;
-- 返回系统的日期和时间,精度更高
        DATEADD()
DATEADD() 函数用于在指定日期上添加指定的时间间隔(如天、月、年等)。
            
            
              mssql
              
              
            
          
          SELECT DATEADD(DAY, 5, '2024-12-01') AS NewDate;
-- 返回 2024-12-06,表示将日期 '2024-12-01' 向后添加 5 天
        DATEDIFF()
DATEDIFF() 函数用于计算两个日期之间的差异,返回值为整数。
            
            
              mssql
              
              
            
          
          SELECT DATEDIFF(DAY, '2024-12-01', '2024-12-03') AS DateDifference;
-- 返回 2,表示两个日期之间相差 2 天
        YEAR()、MONTH() 和 DAY()
这些函数用于从日期中提取年、月和日。
            
            
              mssql
              
              
            
          
          SELECT YEAR('2024-12-03') AS YearPart,
       MONTH('2024-12-03') AS MonthPart,
       DAY('2024-12-03') AS DayPart;
-- 返回:YearPart = 2024, MonthPart = 12, DayPart = 3
        FORMAT()
FORMAT() 函数用于格式化日期和数字,适用于 SQL Server 2012 及更高版本。
            
            
              mssql
              
              
            
          
          SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss') AS FormattedDateTime;
-- 返回 '2024-12-03 13:45:00'
        4. 条件处理函数
SQL Server 中的条件处理函数可以帮助我们根据不同的条件返回不同的结果,通常用于实现复杂的业务逻辑。
CASE
CASE 函数用于根据条件返回不同的结果,类似于编程语言中的 if-else 语句。
            
            
              mssql
              
              
            
          
          SELECT Name, 
       CASE 
           WHEN Salary > 50000 THEN 'High'
           WHEN Salary BETWEEN 30000 AND 50000 THEN 'Medium'
           ELSE 'Low'
       END AS SalaryLevel
FROM Employees;
-- 根据薪资水平返回 'High', 'Medium' 或 'Low'
        IIF()
IIF() 函数是 SQL Server 2012 引入的简化版本的条件表达式,适用于简单条件的判断。
            
            
              mssql
              
              
            
          
          SELECT IIF(Salary > 50000, 'High', 'Low') AS SalaryLevel
FROM Employees;
-- 根据薪资判断薪资等级
        总结
SQL Server 提供了丰富的数据处理函数,包括数据类型转换、数学计算、日期时间处理、条件判断等。这些函数极大地增强了 SQL 查询的灵活性和表达能力,能够帮助我们简化查询逻辑,提升数据处理效率。