代码之家  ›  专栏  ›  技术社区  ›  Anurag

如何统计SQLServer2005中文本数据类型中字符串的出现次数

  •  2
  • Anurag  · 技术社区  · 15 年前

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

    4 回复  |  直到 13 年前
        1
  •  7
  •   Denis Valeev    15 年前

    试试这个:

     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。

        2
  •  1
  •   Scott R. Frost    14 年前

    下面是如何对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]
    
        3
  •  0
  •   anishMarokey FIre Panda    15 年前

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

    convert(varchar(200),textColumn)

        4
  •  0
  •   solkim    15 年前

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

    文本:可变长度的非unicode数据,最大长度为2147483647个字符。

    nText:可变长度的unicide数据,最大长度为1073741823个字符。