首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL查询转换为SQL函数?

将SQL查询转换为SQL函数?
EN

Stack Overflow用户
提问于 2020-06-01 03:26:58
回答 1查看 746关注 0票数 0

我正在处理SQL函数

我创建了一个查询和查询成功运行,但我希望将它们转换成SQL函数。

我在查询日期和年份中返回两个参数

我想将SQL查询转换为SQL函数(见下图)

sql查询

代码语言:javascript
复制
    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),因为我的查询返回多个参数天和年

3在ssms中可用的函数

  • 表值函数
代码语言:javascript
复制
- new inline table valued function
- scalar multi statement table valued function 

  • 标量值函数
  • 聚合函数

我不知道应该使用哪种功能?

我想把SQL查询转换成SQL函数吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-01 04:31:34

您可以使用Scalar函数来实现这一点。

但是您必须在输出时使用CONCAT函数,没有其他选项可以在函数中返回多选择查询。

您还可以使用表值函数获得表格式的输出。

代码语言:javascript
复制
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);

函数的类型取决于返回数据类型

如果返回的数据类型是一个表,那么它需要是一个表值函数.

此外,单击以下链接:

SQL Server中的函数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62125245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档