У меня есть таблица нецензурных слов в SQL Server, и я использую запрос LIKE для поиска текстов для слов в таблице.Мне нужен способ включить пробел вокруг ругательства в запросе LIKE, например:
... LIKE '%{whitespace}SWEAR-WORD{whitespace}%';
Недостаточно поставить пробел вокруг ругательства, потому что это может быть частью другого нормального слова в моем языке(например, «inter», который является частью «international» или «pointer»).
Другое решение, которое я пробовал, использовало это:
... LIKE '%[^a-zA-Z]SWEAR-WORD[^a-zA-Z]%';
Но это не сработало для меня.
Есть ли способ сделать это?Или, в качестве альтернативы, есть ли какое-либо иное решение, кроме LIKE-запроса?
Редактировать: Для лучшего понимания наш текущий способ найти нецензурные слова:
У нас есть таблица с именемReviles
, который имеет 2 столбца (Id и Text) и содержит ограниченные слова и фразы.Мы используем этот запрос, чтобы выяснить, имеет ли контент какие-либо из этих запрещенных слов и фраз:
IF EXISTS (SELECT * dbo.Reviles WHERE @Text LIKE '%' + dbo.Reviles.Text + '%')
@IsHidden = 0
Обратите внимание, что эта проверка выполняется до того, как контент будет вставлен в его таблицу.Приведенный выше код является частью хранимой процедуры, которая получает информацию о сообщении и проверяет различные вещи, включая нецензурные слова, перед тем, как вставить их.
Прежде чем мы сохранили в таблице запрещенные слова, такие как «ругательство», однакотаким образом, мы не могли найти и скрыть содержимое с нецензурными словами в начале или в конце строки или содержимое, состоящее только из нецензурных слов.Например: This is my content with a swear-word
или Swear-word in my content
или Swear-word
Поэтому мы решили удалить эти пробелы и сохранить запрещенные слова, такие как «ругательство».Но это приводит к тому, что некоторое нормальное содержимое скрывается, потому что некоторые нецензурные слова могут быть частью другого слова, которое является нормальным (если мы предположим, что inter - это плохое слово, указатель и международный и т. Д. Будут ограничены).
Извинитедля моего плохого английского, я надеюсь, с этим описанием, я дал понять.