如果找到一个词,则使用 SQL 到 Return 整个段落

Using SQL to Return Entire Paragraph if a word is found

我想 return 在 varbinary 启用文本的列中围绕搜索词的所有词。例如,如果找到单词 crisis,我想 return 段落或搜索单词每边至少 10 个单词。我可以使用自由文本功能,但我不知道如何 return 它周围的文本。

SELECT Filenames, DocumentBin
FROM Tbl_Support_Documents
WHERE FREETEXT(DocumentBin, 'crisis') 

此 SQL 不是为这种功能而设计的。抓取整个文档然后在您的结尾拆分段落或其他内容可能会更快。下面的查询只是 returns 周围的 n 个匹配字符。

请注意,FREETEXT 搜索含义匹配,而不是精确的文本匹配。以下答案假设您正在寻找精确的文本匹配。非精确匹配无法实现此行为。

无论如何,回答您的实际问题:

SELECT Filenames,
    SUBSTRING(DocumentBin, PATINDEX('%crisis%', DocumentBin)-100, 200)
FROM blah blah

使用子字符串,我们可以将文档 bin 限制为匹配项周围的 200 个字符。从那里,你应该挑出你最后关心的单词。