gpt4 book ai didi

mysql - 在 MySQL 中使用 SELECT 时过滤列值

转载 作者:行者123 更新时间:2023-11-29 00:30:49 27 4
gpt4 key购买 nike

我有一个带有 Doc TEXT 列的 mysql 表。

该列包含 HTML 作为内容。

我想选择过滤后的列以仅从内容中获取 URL。列内容包含 A HREF="(.*)"。

我尝试了 mysql 的 REGEXP,但它只会返回 true 或 false,而不是过滤后的匹配项。

非常感谢您的帮助。

最佳答案

如果您的 HTML 列文本是定义明确的 XML(即带有适当结束标记的 XHTML),您可以使用 MySQL 的 extractValue()使用 Xpath 将其解析为 XML 的函数。

CREATE TABLE links (anchor VARCHAR(100) NOT NULL);

INSERT INTO links VALUES ('<a href="http://stackoverflow.com/">Stack Overflow</a>');

SELECT extractValue(anchor, '/a/@href') FROM links; -- prints http://stackoverflow.com/

如果该列包含其他标签(如 <body> 等),只需相应地修改您的 Xpath ( //body/a/@href)。

编辑:对于您在下方评论中共享的 HTML 列:

<HTML><HEAD><TITLE>*******</TITLE></HEAD><BODY><P><A HREF="http://www.google.com">GOOGLE</A></P><div><A HREF="http://www.yahoo.com">YAHOO</A></DIV><TABLE><TR><TD><A HREF="http://www.bing.com">BING</A></TD></TR></TABLE></BODY></HTML>

extractValue() xpath需要修改为//A/@HREF (区分大小写)

SELECT extractValue(anchor, '//A/@HREF') FROM links;
-- prints http://www.google.com http://www.yahoo.com http://www.bing.com

另外,请注意关闭 <div></DIV>不是正确的 XML,但不知何故 MySQL 忽略了它。

关于mysql - 在 MySQL 中使用 SELECT 时过滤列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16622066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com