返回字符串mysql的某些部分

时间:2014-07-25 14:05:52

标签: mysql

我从包含多个页面文本的数据库表中获取结果。

这些网页的内容中包含链接。

我正在尝试从表格中的页面获取所有链接,但我也收到了不需要的文本。

例如,这可能是页面某个部分的内容: 第1行:This is the link for lalalaal </a href="page5.html"> click</a> 第2行if you want to go to page lalalala2 <a href="page6.html"> click</a>

现在我只希望区域从<a href开始,到</a&gt;结束。在结果记录中。如果文本中有多个锚标记,则应将每个锚标记视为记录。 返回的结果应该是这样的 ID值 1&#39;点击&#39; 2&#39;点击&#39;

我尝试了以下查询:

  1. 从[Database.tablename]中选择*,其中<a href</a>之间的值;
  2. 从[Database.tablename]中选择*,找到&#39;(<a href,值)&gt; 0&#39;并找到(</a>,value)&gt; 0;
  3. 但是这两个查询都没有给我想要的结果......

1 个答案:

答案 0 :(得分:0)

这种文本提取最好使用regular expressions解决。

MySQL有一些支持(参见here),但它只能用于识别哪些行有<a></a>对。即使确定记录中存在至少一个链接,也无法帮助您提取(可能很多)链接,并将它们视为不同的记录。

要成功提取这些链接,至少根据我的知识,您需要一个更适合使用正则表达式的工具。大多数语言(Perl,PHP,Python,Java等)支持它们,一些本地支持,一些使用可用的库。您只能选择包含链接的记录(使用REGEXP),并通过代码提取每个链接。

另一种处理方法是在MySQL上执行查询,将结果导出到文本文件,并使用shell脚本处理其内容(例如,在UNIX / Linux下使用sed。) p>

如果您需要使用 MySQL实现它,那么我最好的猜测是尝试使用存储过程(以便能够按记录逐个处理结果。)我仍然不能想一想这样的SP的实现,它保证检测并成功地将记录中的每个可能的链接提取为每个链接一条记录。