Sql批量删除两个标记之间的文本内容

问题描述:

是否可以批量删除两个已知标记之间的文本内容?Sql批量删除两个标记之间的文本内容

我需要这样做以避免手动编辑600个帖子。

内容将被删除处于这种形式:

[:en] content to remove [:] 

除了要除去我需要也消除了标志物的含量[:EN]和[:]在WordPress表wp_post和wp_content。

你真正想要的是一个更新语句,用于删除列中的文本而不是删除语句(删除行)。你可以用这个丑陋的变通途径:

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](仅取子后[:]],但是被删除的长度必须在[:]的长度加上+3),然后取出前后的子字符串和concat。

改写为select语句证明它的工作原理:SQLFiddle