使用Mysql提取HTML文本

时间:2014-10-27 13:57:44

标签: mysql sql

我遇到的情况是我在mysql中有一个字段,这是一个很长的html字段。我需要提取html标签之间的单词。

说,

<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>

我需要这样的东西。

"My First Heading My first paragraph"

我目前正在使用类似以下功能的导出csv文件在java中执行此操作:

public String getStringFromHtml(String html) {
         String nohtml = html.toString().replaceAll("<[^>]*>"," ");
         return nohtml.trim().replaceAll("\\s+", " ");
}

但我们假设我只是使用Mysql工作台(没有服务器端脚本)进行数据分析。

我仍然想知道是否有任何方法Mysql允许我们消除html标签并提取其间的单词。我试图搜索遍布堆栈溢出和放大器谷歌,我不幸运,因为只有建议在PHP或Java或存储过程中使用它。

仍然无法使用SQL提取html文本?

1 个答案:

答案 0 :(得分:1)

您可以使用ExtractValue()函数提供一个XPath表达式,用于挑选您需要的部分:

mysql> SELECT html FROM mytable;
+----------------------------------------------------------------------------------------------+
| html                                                                                         |
+----------------------------------------------------------------------------------------------+
| <!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html> |
+----------------------------------------------------------------------------------------------+

SELECT ExtractValue(html, '//html/body/p[1]') AS value FROM mytable;
+---------------------+
| value               |
+---------------------+
| My first paragraph. |
+---------------------+