我想在数据库中的特定关键字之后找到前4个单词和最后4个单词。假设关键字为"Account"
,那么我想在"Account"
出现在一行之前找到前4个单词,并在"Account"
出现在一行之后找到4个单词。
目前我正在使用此查询查找特定关键字后的前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%'
答案 0 :(得分: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,然后在外部进行解析,这样会更容易=]。它也可能会节省更多的系统资源。