我遇到的情况是我在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文本?
答案 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. |
+---------------------+