SQL 自定义函数

函数分类

函数分为标量函数、表值函数、自定义函数。

标量函数

标量函数返回一个单一的值,通常用于计算或转换数据。

 CREATE FUNCTION dbo.GetAge(@BirthDate datetime)
 RETURNS int
 AS
 BEGIN
 DECLARE @Age int
 SET @Age = DATEDIFF(year,@BirthDate,GETDATE())
 RETURN @Age
 END 

调用函数:

SELECT dbo.GetAge('1980-01-01')

函数返回值:

33

表值函数

表值函数返回一个表,通常用于查询或过滤数据。

 CREATE FUNCTION dbo.GetCustomers(@City varchar(50))
 RETURNS TABLE
 AS
 RETURN(
 SELECT * FROM Customers WHERE City = @City
 )

调用函数:

SELECT * FROM dbo.GetCustomers('New York')

函数返回值:

#CustomerIDCustomerNameCity
1JohnNewYork
2MaryNewYork
3TomNewYork

自定义函数

自定义函数可以根据具体需求编写,通常用于执行复杂的计算或逻辑处理。自定义函数的创建和调用方式与标量函数类似,但可以包含更复杂的逻辑。
在SQL中,还可以定义自定义聚合函数,例如计算员工工资的平均值:

CREATE FUNCTION F_AVG_SALARY()
RETURNS FLOAT
AS
BEGIN
   RETURN (SELECT AVG(工资) FROM [员工信息表])
END

调用函数:

SELECT DBO.F_AVG_SALARY() AS 平均工资 FROM [员工信息表]