8

我想从数据库中找到特定关键字之后的前 4 个单词和后 4 个单词。假设关键字是"Account"然后我想找到出现在一行之前的前 4 个单词"Account"和出现在一行之后的 4 个单词"Account"

目前我正在使用此查询来查找特定关键字之后的前 20 个字符和后 20 个字符。

SELECT 
SUBSTRING(line.WD, LOCATE('%Account%', line.WD) - 20, 20) AS First20Char, 
SUBSTRING(line.WD, LOCATE('%Account%', line.WD)+LENGTH('a'), 20) AS Last20Char 
FROM `line` WHERE line.WD LIKE '%Account%'
4

1 回答 1

1

SQL 被称为 * S *QL 是有原因的——如果没有中间编程语言的帮助,你将无法做如此高级的事情——除非你想让事情变得混乱。

简短的回答是,您必须先使用 UDF(用户定义函数)进行拆分,然后解析分隔字符串(在空格 ' ' 上),然后您可以应用 -4/+4 逻辑。

这是网上关于 SQL-UDF 的最佳文章,可帮助您入门:

http://www.codeproject.com/Articles/7938/SQL-User-Defined-Function-to-Parse-a-Delimited-Str

祝你好运!

PS - 抓住你的+/- 30 chr然后在外部进行解析会容易得多=]。它也可能会节省更多的系统资源。

于 2012-04-09T06:32:52.330 回答