[英]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.