如何解决使用T-SQL函数,如何从count*函数返回整数?
我只是想返回从选择产生的count(*)
整数值。这是我第一次尝试功能。
我已经尝试过该函数的内部语句,并且所有工作都符合我的预期。这将返回表,但是我真正想要的只是返回count(*)
返回的整数。我该怎么办?
CREATE FUNCTION dbo.LogicMatchCount
(@logic varchar(1000),
@tags varchar(1000)
)
RETURNS TABLE
AS
RETURN
WITH
LogicTagTable AS
(
SELECT TRIM(VALUE) AS logic_tag
FROM string_split(@logic,'&')
),
DonorTagTable AS
(
SELECT TRIM(VALUE) donor_tag
FROM string_split(@tags,',')
)
SELECT COUNT(*) AS TagMatchCount
FROM LogicTagTable ltt
INNER JOIN DonorTagTable dtt ON dtt.donor_tag = ltt.logic_tag;
谢谢!
解决方法
由于您实际上只想返回一个单个原子值,请改用标量值函数:
CREATE FUNCTION dbo.LogicMatchCount
(@logic varchar(1000),@tags varchar(1000))
RETURNS INT
AS
BEGIN
DECLARE @CountResult INT;
WITH LogicTagTable AS
(
SELECT TRIM(VALUE) AS logic_tag
FROM string_split(@logic,'&')
),DonorTagTable AS
(
SELECT TRIM(VALUE) donor_tag
FROM string_split(@tags,',')
)
SELECT @CountResult = COUNT(*)
FROM LogicTagTable ltt
INNER JOIN DonorTagTable dtt ON dtt.donor_tag = ltt.logic_tag;
RETURN @CountResult;
END;
然后这样称呼它:
SELECT dbo.LogicMatchCount('....','....');
,
也许略有不同的方法
CREATE FUNCTION dbo.svfLogicMatchCount
(@logic varchar(1000),@tags varchar(1000) )
Returns int as
Begin
Return (
SELECT COUNT(*)
FROM ( SELECT TRIM(VALUE) AS logic_tag
FROM string_split(@logic,'&')
) ltt
INNER JOIN (
SELECT TRIM(VALUE) donor_tag
FROM string_split(@tags,')
) dtt ON dtt.donor_tag = ltt.logic_tag
)
End
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。