如何计算SQL Server 2005中TEXT数据类型中字符串的出现次数

时间:2010-09-23 12:02:54

标签: sql sql-server-2005 text

我的表中有一列数据类型TEXT。现在,我需要找到该TEXT字段中字符串的出现次数。 我已经在该表上创建了全文索引。但我不知道如何继续前进。 我已经找到了计算VARCHAR字符串出现次数的方法。但它们不能按原样应用于TEXT字段。有什么建议吗?

4 个答案:

答案 0 :(得分:7)

试试这个:

 declare @searchString varchar(max);
 set @searchString = 'something';
 declare @textTable table (txt text);
 insert into @textTable ( txt )
 values  ( 'something that has something 2 times' )

 select 
 (
  datalength(txt) - 
  datalength(replace(cast(txt as varchar(max)), @searchString, ''))
 )
 /datalength(@searchString) [Count]

   from @textTable as tt

请注意,转换为varchar(max)不会截断您的text列,因为varchar(max)的最大长度为2 ^ 31-1个字节或2Gb。

答案 1 :(得分:0)

将该(文本)字段转换为varchar并查找计数

例如:convert(varchar(200),textColumn)

答案 2 :(得分:0)

请注意,如果您使用ntext而不是文本,Denis Valeevs的答案将不会给您正确答案。

Text:可变长度的非unicode数据,最大长度为2,147,483,647个字符。

nText:可变长度的自杀数据,最长为1,073,741,823个字符。

答案 3 :(得分:0)

以下是如何对付ntext:

    CREATE FUNCTION fn_CountInNText 
    (
        @SearchString nvarchar,
        @NTextToSearch ntext
    )
    RETURNS int
    AS
    BEGIN
        RETURN 
        (
        datalength(@NTextToSearch) - 
        datalength(replace(cast(@NTextToSearch as nvarchar(max)), @SearchString, ''))
        )
        /datalength(@SearchString)/2 
    END
    GO

然后选择这样的东西:

SELECT dbo.fn_CountInNText('Something',[TheNTextColumn]) AS [Count] 
FROM [TheTable]