Bạn có thể tạo một hàm có giá trị bảng để phân tích cú pháp các từ và nối nó vào truy vấn của bạn với qQuestion. Trong lược đồ của bạn, tôi khuyên bạn nên sử dụng varchar(8000)
hoặc varchar(max)
thay vì text
. Trong khi đó, những điều sau sẽ giúp bạn bắt đầu:
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 */)