是否可以批量删除两个已知标记之间的文本内容?
我需要这样做以避免手动编辑600个帖子。
要删除的内容采用以下形式:
[:en] content to remove [:]
除了要删除的内容之外,我还需要删除wordpress表wp_post和wp_content中的标记[:en]和[:]。
答案 0 :(得分:0)
你真正想要的是一个更新语句来删除列中的文本而不是删除语句(删除行)。你可以通过这种丑陋的解决方法实现目标:
UPDATE yourTable
SET yourColumn = CONCAT(
SUBSTR(yourColumn, 1, INSTR(yourColumn, '[:en]') - 1),
SUBSTR(yourColumn, INSTR(SUBSTR(yourColumn, INSTR(yourColumn, '[:en]')), '[:]')
+ INSTR(yourColumn, '[:en]') + 3)
)
WHERE yourColumn LIKE '%[:en]%[:]%'
它背后的原因:找到[:en]的索引和[:en]之后的第一个[:](仅通过[:en]之后的子串,但是后面切掉的长度有要添加+3作为[:]的长度,然后在前后连续获取子串。
重写为select语句以证明其有效:SQLFiddle