我正在编写一个过程,以便自动覆盖用户在表单上输入的亵渎单词,并在有问题的单词位于查找数据库中时用星号代替文本。SQL确定查找表中是否列出了nvarchar变量中的单词
为了这个例子的缘故,我们假设Flubber在我们的Profanity表中是一个粗鲁的词,当它作为一个单词输入时,我们需要标记它。 'Flubber'需要被标记为不合适的,'Flubbermost'没问题。
用户输入:我真的很喜欢看Flubber。
我最终想要做的是更新字段中的数据:我真的很喜欢看*******。或者是一些变化,也许是F **** r。
我使用CONTAINS
(我只是想确定我们是否在这个阶段有亵渎字)
DECLARE @String NVARCHAR(4000)
SET @String = N'I really like watching Flubber'
SELECT MyWord FROM MyLookup WHERE CONTAINS(MyWord,@String)
尝试,但我得到以下信息
消息7630 ,Level 15,State 3,Line 4
全文搜索条件'真的'附近的语法错误'我真的很喜欢看Flubber'。
任何帮助将受到感谢。
编辑:
在从AHiggins我添加了一个全文索引和下面的代码帮助工作得很好:
DECLARE @String NVARCHAR(4000)
DECLARE @MatchedWord NVARCHAR(100)
DECLARE @ReturnString NVARCHAR(4000)
SET varString = 'i really like watching Flubber'
SELECT varMatchedWord = MyWord FROM MyLookup WHERE FREETEXT (DESCR,@String)
PRINT CONVERT(VARCHAR(4000),@MatchedWord)
而当整个单词找到该返回数据 - 完美。
关于我的问题的第二部分:请用'*******'代替'Flubber'这个词的最佳方式是什么?
不错的一个AHiggins,谢谢。接下来我需要检查,我忘了添加到OP - 我会更新。如果这个词是独立发现的话。例如,String = N'Flubbermost'可以,String = N'Flubber'不好,需要标记。 – ROTB54 2014-10-27 16:46:47
因此,您的条件已经扩展:您现在需要知道它是否是单独的单词(空格,标点符号或之后的字符串末尾)。那是对的吗? – AHiggins 2014-10-27 17:00:45
对不起AlHiggins,是的,这是正确的。 – ROTB54 2014-10-28 07:46:09