簡體   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