提问者:小点点

MySQL简单查询提取给定2个分隔符的子字符串


具体地说,我需要从表tmp.label中选择字段label的分隔符<!--RWBL_1-><!--RWBL_2->之间的部分,其中label包含以便能够为使用HTML标记错误格式化的记录更新该字段。

结果类似于strip_tags。显然,这仅是由于存在上述(或类似)分隔符才可能的。


共1个答案

匿名用户

这里有一个简单的解决方案,用于提取给定2个分隔符的子字符串。

SELECT
    SUBSTRING_INDEX(
        SUBSTRING_INDEX(label, 
            '<!-- rwbl_1 -->', -1), 
        '<!-- rwbl_2 -->', 1) AS cutout 
FROM tmp.label 
WHERE label LIKE '<span%' 
ORDER BY 1 
LIMIT 1;

更摘要:

SELECT
    SUBSTRING_INDEX(
        SUBSTRING_INDEX(string_field,        # field name
            'delimiter_1', -1),              # take the right part of original
        '<!-- delimiter_2 -->', 1)           # take the left part of the resulting substring
    AS cutout 
FROM my_table 
WHERE my_condition;

现在更新的工作方式如下:

UPDATE my_table 
SET string_field = SUBSTRING_INDEX(
        SUBSTRING_INDEX(string_field, 
            'delimiter_1', -1), 
        '<!-- delimiter_2 -->', 1) 
WHERE my_condition;