微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用T-SQL函数,如何从count*函数返回整数?

如何解决使用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 举报,一经查实,本站将立刻删除。