Есть потребность выявлять проблемные слова в текстовом вводе от пользователя.
Создаем таблицу as_stopwords
Нюанс - первичный ключ здесь будет само слово для ускорения процесса обработки.
CREATE TABLE [dbo].[as_stopwords](
[word] [nvarchar](32) NOT NULL,
CONSTRAINT [PK_as_stopwords] PRIMARY KEY CLUSTERED
(
[word] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Слова в таблицу проще внести через SQL (к примеру есть файл со словами через пробел или каждое слово на отдельной строке):
insert into as_stopwords
select distinct value from dbo.split('...тут большой текст... ', char(10))
where len(value)>0
Функция поиска проблемных слов в тексте:
CREATE OR ALTER FUNCTION [dbo].[moderate_checkTexByStoplist]
(
@text nvarchar(max)
)
RETURNS @res table(word nvarchar(64), position int) as
BEGIN
insert into @res(word, position)
select word, CHARINDEX(word, @text) position from as_stopwords where @text like '%'+word+'%'
return
END
Использование функции:
select word,position
from [dbo].[moderate_checkTexByStoplist](@text)
Если функция что-то выдала, то значит было некое стоп слово в тексте и можно дальше делать различную обработку данного события: