【问题标题】:Find First 4 words and Last 4 words from database after particular keywords?在特定关键字之后从数据库中查找前 4 个单词和后 4 个单词?
【发布时间】:2012-04-09 06:13:02
【问题描述】:

我想从数据库中查找特定关键字之后的前 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%'

【问题讨论】:

  • 执行查询时遇到什么错误?请详细说明!!

标签: mysql


【解决方案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 然后在外部进行解析会容易得多 =]。它可能还会节省更多的系统资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多