【发布时间】:2021-06-25 13:47:56
【问题描述】:
具体来说,我需要从分隔符 <!-- rwbl_1 --> 和 <!-- rwbl_2 --> 之间的表 tmp.label 中选择字段 label 的一部分,其中 label 包含 <span 以便能够更新该字段以获取格式错误的记录带有HTML 标签。
结果类似于strip_tags。显然,这只有在上述(或类似)分隔符的存在下才有可能。
【问题讨论】:
具体来说,我需要从分隔符 <!-- rwbl_1 --> 和 <!-- rwbl_2 --> 之间的表 tmp.label 中选择字段 label 的一部分,其中 label 包含 <span 以便能够更新该字段以获取格式错误的记录带有HTML 标签。
结果类似于strip_tags。显然,这只有在上述(或类似)分隔符的存在下才有可能。
【问题讨论】:
对于上述情况,这是一个简单的解决方案,可以在给定 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;
【讨论】: