如何计算SQL Server中列中的单词数

not*_*ing 0 sql sql-server

是否有一个查询将返回列中的单词总数?我找到了一些代码,可以让我计算字符串中的单词,但不能将它应用于整个列.

我首先创建了从http://www.sql-server-helper.com/functions/count-words.aspx找到的函数:

CREATE FUNCTION [dbo].[WordCount] ( @InputString VARCHAR(4000) ) 
RETURNS INT
AS
BEGIN

DECLARE @Index          INT
DECLARE @Char           CHAR(1)
DECLARE @PrevChar       CHAR(1)
DECLARE @WordCount      INT

SET @Index = 1
SET @WordCount = 0

WHILE @Index <= LEN(@InputString)
BEGIN
    SET @Char     = SUBSTRING(@InputString, @Index, 1)
    SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
                         ELSE SUBSTRING(@InputString, @Index - 1, 1)
                    END

    IF @PrevChar = ' ' AND @Char != ' '
        SET @WordCount = @WordCount + 1

    SET @Index = @Index + 1
END

RETURN @WordCount

END
GO
Run Code Online (Sandbox Code Playgroud)

接下来,在字符串上测试它:

    DECLARE @String VARCHAR(4000)
    SET @String = 'Health Insurance is an insurance against expenses incurred through illness of the insured.'


SELECT [dbo].[WordCount] ( @String )
Run Code Online (Sandbox Code Playgroud)

在此示例中,这将返回13.但是,我试图获取整个列的总计.例如,如果我有一个包含2行的列,并且每行包含此字符串,我希望它返回26以反映列中的总字数而不是单个字符串.

Mur*_*nik 5

你可以总结这个函数调用:

SELECT SUM([dbo].[WordCount]([my_column]))
FROM   [my_table]
Run Code Online (Sandbox Code Playgroud)