将 SQL 查询转换为 SQL 函数?
Posted
技术标签:
【中文标题】将 SQL 查询转换为 SQL 函数?【英文标题】:Convert SQL query to SQL functions? 【发布时间】:2020-06-01 03:26:58 【问题描述】:我正在研究 SQL 函数
我创建了一个查询并查询成功运行,但我想将它们转换为 SQL 函数
我在查询天数和年份返回两个参数
我想将 SQL 查询转换为 SQL 函数,见下图
sql查询
Declare @dateofbirth datetime
Declare @currentdatetime datetime
Declare @years varchar(4)
Declare @days varchar(4)
set @dateofbirth = '2020-01-25 '
set @currentdatetime = getdate()
select @years = datediff(year,@dateofbirth,@currentdatetime)
select @days = datediff(DAY,@dateofbirth,@currentdatetime)
select @years + ' years,'
select @days + ' days,'
我可以使用多语句表值函数 (MSTVF),因为我的查询返回多个参数天数和年数?
ssms 中可用的 3 个函数
表值函数
新的内联表值函数 标量多语句表值函数标量值函数
聚合函数我不确定应该使用哪个功能?
我想
【问题讨论】:
【参考方案1】:您可以使用标量函数来实现这一点。
但是你必须在输出中使用CONCAT
函数,函数中没有其他选项可以返回多选查询。
您还可以使用 Table Valued 函数获取 Table 格式的输出。
CREATE Function dbo.Years_Days(@dateofbirth datetime, @currentdatetime datetime)
RETURNS VARCHAR(MAX) AS
BEGIN
Declare @years varchar(4)
Declare @days varchar(4)
set @currentdatetime = ISNULL(@currentdatetime,getdate());
select @years = datediff(year,@dateofbirth,@currentdatetime)
select @days = datediff(DAY,@dateofbirth,@currentdatetime)
RETURN @years + ' years,' + @days + ' days,'
END
SELECT dbo.Years_Days( '2020-01-25 ', NULL);
函数类型取决于返回数据类型
如果返回的数据类型是表,那么它需要是表值函数。
进一步,点击以下链接:
Functions In SQL Server
【讨论】:
以上是关于将 SQL 查询转换为 SQL 函数?的主要内容,如果未能解决你的问题,请参考以下文章
使用函数 SUM() 和 Group by 将 Mysql 查询转换为 SQL 查询