常用函数

 数据库   ZeroIsStart   2024-10-20 09:59   24

SQL Server 常用函数详解:字符串函数、日期函数与数学函数

SQL Server 提供了丰富的内置函数,帮助开发者对数据进行灵活的操作和计算。这些函数被广泛应用于文本处理、日期计算和数值处理等场景。本文将详细介绍几种常用的 SQL Server 函数,包括字符串函数、日期函数和数学函数,涵盖它们的语法、使用方法、常见示例以及实际应用场景。


一、字符串函数

1. LEN() 函数

LEN() 函数用于返回字符串中的字符数(不包括尾部的空格)。它是 SQL Server 中最常用的字符串函数之一。

语法:

LEN(string)
  • string:要计算字符长度的字符串。

示例:

SELECT LEN('Hello World') AS Length;  -- 返回 11,因为 'Hello World' 包含 11 个字符
SELECT LEN(' SQL Server ') AS Length;  -- 返回 10,忽略尾部空格

应用场景:

  • LEN() 可以用于数据清洗中,去除字符串末尾的多余空格,或在某些情况下用于验证字符串的长度。

2. SUBSTRING() 函数

SUBSTRING() 函数用于从一个字符串中提取子字符串,基于给定的起始位置和长度。

语法:

SUBSTRING(string, start, length)
  • string:要从中提取子字符串的源字符串。
  • start:从该位置开始提取(位置从 1 开始)。
  • length:要提取的子字符串的长度。

示例:

SELECT SUBSTRING('Hello World', 1, 5) AS SubStr;  -- 返回 'Hello'
SELECT SUBSTRING('SQL Server', 5, 6) AS SubStr;  -- 返回 'Server'

应用场景:

  • SUBSTRING() 常用于从文本数据中提取关键部分,例如从身份证号中提取出生日期,或从地址字段中提取城市名称。

3. REPLACE() 函数

REPLACE() 函数用于在一个字符串中查找某个子字符串,并将其替换为另一个子字符串。

语法:

REPLACE(string, old_string, new_string)
  • string:源字符串。
  • old_string:需要被替换的子字符串。
  • new_string:用来替换的子字符串。

示例:

SELECT REPLACE('Hello World', 'World', 'SQL') AS ReplacedString;  -- 返回 'Hello SQL'
SELECT REPLACE('SQL Server is great', 'great', 'awesome') AS ReplacedString;  -- 返回 'SQL Server is awesome'

应用场景:

  • REPLACE() 函数用于数据清洗或文本替换,常见于替换错误数据、去除敏感信息或格式化数据。

二、日期函数

SQL Server 提供了多种日期函数,帮助我们进行日期计算和格式化处理。

1. GETDATE() 函数

GETDATE() 函数用于获取当前的日期和时间(当前服务器的系统日期和时间)。

语法:

GETDATE()

示例:

SELECT GETDATE() AS CurrentDateTime;  -- 返回当前的日期和时间,例如 '2024-10-19 14:22:31.123'

应用场景:

  • GETDATE() 通常用于记录事务发生的时间,或者生成动态的时间戳,用于日志、报告或数据存档。

2. DATEADD() 函数

DATEADD() 函数用于对指定的日期值进行加法操作,可以加上指定的年、月、日、小时等。

语法:

DATEADD(datepart, number, date)
  • datepart:需要操作的日期部分(如 yearmonthdayhour 等)。
  • number:要添加的数字,正数表示加,负数表示减。
  • date:要操作的日期。

示例:

SELECT DATEADD(DAY, 5, '2024-10-19') AS NewDate;  -- 返回 '2024-10-24'
SELECT DATEADD(MONTH, -2, '2024-10-19') AS NewDate;  -- 返回 '2024-08-19'

应用场景:

  • DATEADD() 常用于计算未来或过去的日期,例如计算合同到期日期、查找生日的前后日期等。

3. DATEDIFF() 函数

DATEDIFF() 函数用于计算两个日期之间的差值。它返回两个日期之间的差异,单位由 datepart 指定。

语法:

DATEDIFF(datepart, startdate, enddate)
  • datepart:指定日期差异的单位(如 yearmonthday 等)。
  • startdate:开始日期。
  • enddate:结束日期。

示例:

SELECT DATEDIFF(DAY, '2024-10-01', '2024-10-19') AS DaysDiff;  -- 返回 18(两日期之间的天数差)
SELECT DATEDIFF(MONTH, '2024-01-01', '2024-10-19') AS MonthsDiff;  -- 返回 9(两日期之间的月数差)

应用场景:

  • DATEDIFF() 可以用于计算日期间隔,如计算员工的工龄、产品的保质期等。

三、数学函数

SQL Server 提供了多种数学函数,用于数值计算和转换。

1. ABS() 函数

ABS() 函数用于返回数值的绝对值。

语法:

ABS(number)
  • number:要计算绝对值的数字。

示例:

SELECT ABS(-10) AS AbsoluteValue;  -- 返回 10
SELECT ABS(7.5) AS AbsoluteValue;  -- 返回 7.5

应用场景:

  • ABS() 函数常用于确保计算结果为正数,如处理财务数据时保证利润或损失为正值。

2. CEILING() 函数

CEILING() 函数返回大于或等于指定数字的最小整数。

语法:

CEILING(number)
  • number:要向上取整的数字。

示例:

SELECT CEILING(5.2) AS CeilValue;  -- 返回 6
SELECT CEILING(-5.2) AS CeilValue;  -- 返回 -5

应用场景:

  • CEILING() 常用于需要对结果进行向上取整的场景,如计算商品数量时向上取整,以确保满足最小订货量。

3. FLOOR() 函数

FLOOR() 函数返回小于或等于指定数字的最大整数。

语法:

FLOOR(number)
  • number:要向下取整的数字。

示例:

SELECT FLOOR(5.7) AS FloorValue;  -- 返回 5
SELECT FLOOR(-5.7) AS FloorValue;  -- 返回 -6

应用场景:

  • FLOOR() 用于计算向下取整的场景,例如计算折扣、支付金额等。

总结

SQL Server 提供了多种常用函数,帮助开发者在字符串操作、日期计算和数值处理方面提高工作效率。以下是本篇文章中介绍的函数类型和应用场景:

  • 字符串函数: LEN()SUBSTRING()REPLACE() 可用于处理文本数据,如获取字符串长度、提取子字符串和替换内容。
  • 日期函数: GETDATE()DATEADD()DATEDIFF() 可用于获取当前日期、进行日期加减和计算日期差异。
  • 数学函数: ABS()CEILING()FLOOR() 可用于数值的绝对值计算、向上取整和向下取整。

通过熟练掌握这些函数,您可以高效地处理数据库中的数据,满足各种业务需求。