繁体   English   中英

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

[英]How to count the occurrences of a string inside TEXT datatype in SQL Server 2005

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

尝试这个:

 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。

这是针对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]

将that(Text)字段转换为varchar并找到计数

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

请注意,如果您使用ntext而不是text,则Denis Valeevs的答案将无法为您提供正确的答案。

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

nText:可变长度非杀虫剂数据,最大长度为1,073、741、823个字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM