Sie könnten eine Tabellenwertfunktion erstellen, um Wörter zu analysieren und sie mit Ihrer Abfrage für qQuestion zu verbinden. In Ihrem Schema empfehle ich die Verwendung von varchar(8000)
oder varchar(max)
statt text
. In der Zwischenzeit sollte Ihnen Folgendes den Einstieg erleichtern:
create function [dbo].[fnParseWords](@str varchar(max), @delimiter varchar(30)='%[^a-zA-Z0-9\_]%')
returns @result table(word varchar(max))
begin
if left(@delimiter,1)<>'%' set @delimiter='%'[email protected];
if right(@delimiter,1)<>'%' set @delimiter+='%';
set @str=rtrim(@str);
declare @pi int=PATINDEX(@delimiter,@str);
while @pi>0 begin
insert into @result select LEFT(@str,@pi-1) where @pi>1;
set @str=RIGHT(@str,len(@str)[email protected]);
set @pi=PATINDEX(@delimiter,@str);
end
insert into @result select @str where LEN(@str)>0;
return;
end
go
select COUNT(*)
from webqueries q
cross apply dbo.fnParseWords(cast(q.qQuestion as varchar(max)),default) pw
where pw.word not in ('and','is','a','the'/* plus whatever else you need to exclude */)