0
是否可以批量删除两个已知标记之间的文本内容?Sql批量删除两个标记之间的文本内容
我需要这样做以避免手动编辑600个帖子。
内容将被删除处于这种形式:
[:en] content to remove [:]
除了要除去我需要也消除了标志物的含量[:EN]和[:]在WordPress表wp_post和wp_content。
是否可以批量删除两个已知标记之间的文本内容?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