在选择语句中使用SQL用户定义函数

73

我在SQL中有一个名为getBuisnessDays的用户定义函数,它接受@startdate和@enddate,并返回两个日期之间的工作日数量。我如何在我的select语句中调用该函数?

这是我的想法..

SELECT getBusinessDays(a.opendate,a.closedate) 
FROM account a
WHERE ...

3
请记住,UDF(用户定义函数)可能会根据优化器的反应而影响查询性能。它们通常意味着逐行处理而不是基于集合进行处理。对于您的情况,最好使用日历表,并在需要时针对该表进行选择。 - Tom H
3个回答

124

是的,你几乎可以做到那样:

SELECT dbo.GetBusinessDays(a.opendate,a.closedate) as BusinessDays
FROM account a
WHERE...

6
该死 - 你比我快了 - 你需要使用所有者前缀。 - DJ.

14

如果它是一个表值函数(返回一个表集合),那么您只需将其作为表进行连接。

此函数使用传递的逗号分隔列表中的所有值生成一个列的表。

SELECT * FROM dbo.udf_generate_inlist_to_table('1,2,3,4')

8

使用标量值UDF而不是表值UDF,然后您可以按照所需的方式在SELECT语句中使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接