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