2016-09-29 103 views
0

是否可以批量刪除兩個已知標記之間的文本內容?Sql批量刪除兩個標記之間的文本內容

我需要這樣做以避免手動編輯600個帖子。

內容將被刪除處於這種形式:

[:en] content to remove [:] 

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

回答

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](僅取子後[:]],但是被刪除的長度必須在[:]的長度加上+3),然後取出前後的子字符串和concat。

改寫爲select語句證明它的工作原理:SQLFiddle