You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中移除<>内内容并检索非标签文本的实现方法

在MySQL中查询HTML字段的非标签文本内容

要实现仅检索HTML字段中非<>包裹的文本、忽略所有标签内容的需求,可通过以下两种方式实现:

方法一:自定义去除HTML标签的函数

如果你的MySQL账号拥有创建函数的权限,可先定义一个清理HTML标签的函数,再基于处理后的内容查询:

DELIMITER //
CREATE FUNCTION strip_html_tags(input TEXT) RETURNS TEXT
DETERMINISTIC
BEGIN
    DECLARE start_pos INT;
    DECLARE end_pos INT;
    DECLARE temp_text TEXT;
    SET temp_text = input;
    
    WHILE LOCATE('<', temp_text) > 0 AND LOCATE('>', temp_text) > LOCATE('<', temp_text) DO
        SET start_pos = LOCATE('<', temp_text);
        SET end_pos = LOCATE('>', temp_text);
        SET temp_text = INSERT(temp_text, start_pos, end_pos - start_pos + 1, '');
    END WHILE;
    
    RETURN TRIM(temp_text);
END //
DELIMITER ;

创建完成后,即可用该函数过滤字段内容并执行查询,比如检索包含some wording的记录:

SELECT * 
FROM your_table 
WHERE strip_html_tags(your_html_field) LIKE '%some wording%';

方法二:使用正则替换(MySQL 8.0+)

若使用MySQL 8.0及以上版本,可直接利用内置的REGEXP_REPLACE函数一步完成标签清理与查询,无需自定义函数:

SELECT * 
FROM your_table 
WHERE REGEXP_REPLACE(your_html_field, '<.*?>', '') LIKE '%some wording%';

补充说明

  • 正则表达式<.*?>会匹配所有以<开头、>结尾的标签内容(包括自闭合标签),替换为空字符串后即可得到纯文本内容。
  • 若HTML存在嵌套标签或特殊格式,可根据实际情况调整正则表达式,上述正则可覆盖绝大多数普通HTML场景。

内容的提问来源于stack exchange,提问作者Roger Reyes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:05:16