无法用SQL查询替换未知长度的字符串?

时间:2016-07-29 06:48:01

标签: mysql sql wordpress

这甚至可能吗?

我想要做的就是在Wordpress数据库列中搜索一个公共字符串,然后删除字符串和字符串左侧的所有字符串

我正尝试以下各种变体:

UPDATE wp_posts
SET post_content = REPLACE(post_content, '%(1280 x 853)</p>', '')

我已经意识到你不能将REPLACE与通配符一起使用。那么有没有其他方法可以做到这一点?

注意:公共字符串左侧的内容长度不一,所以我无法使用任何需要指定一定数量字符的代码。

是的,我实际上想要更新数据库列中的每个适用行,而不是简单地返回SELECT语句。

非常感谢任何帮助。我的大脑在这个问题上老了10年。

3 个答案:

答案 0 :(得分:0)

希望我清楚地理解你的问题,你可以试试这个:

date    |  name  | record  
7/27/16 | john   | H  
7/27/16 | john   | P  
7/28/16 | john   | P  
7/28/16 | john   | L  

答案 1 :(得分:0)

试试这个,

UPDATE wp_posts SET post_content = SUBSTR(post_content, 1, (LENGTH(post_content) - 16));

如果有任何进一步改进的查询,我会在评论中发帖。

答案 2 :(得分:0)

鉴于此

MariaDB [sandbox]> SELECT * FROM T;
+---------------------------+
| STR                       |
+---------------------------+
| AB(1280 x 853)</p>CD      |
| 1234(1280 x 853)</p>56789 |
| ZYX                       |
+---------------------------+

这个

UPDATE T
SET    STR =  SUBSTRING(STR,INSTR(STR,'(1280 x 853)</p>') + LENGTH('(1280 x 853)</p>'),LENGTH(STR))
WHERE    INSTR(STR,'(1280 x 853)</p>') > 0
;

结果

SELECT * FROM T;
+-------+
| STR   |
+-------+
| CD    |
| 56789 |
| ZYX   |
+-------+