我正在尝试增加表wp_terms中的列。
我有这个
UPDATE wp_terms
SET slug = REPLACE(slug, '2009', '2008');
UPDATE wp_terms
SET slug = REPLACE(slug, '2010', '2009');
UPDATE wp_terms
SET slug = REPLACE(slug, '2011', '2010');
UPDATE wp_terms
SET slug = REPLACE(slug, '2012', '2011');
UPDATE wp_terms
SET slug = REPLACE(slug, '2013', '2012');
UPDATE wp_terms
SET slug = REPLACE(slug, '2014', '2013');
UPDATE wp_terms
SET slug = REPLACE(slug, '2015', '2014');
UPDATE wp_terms
SET slug = REPLACE(slug, '2016', '2015');
UPDATE wp_terms
SET slug = REPLACE(slug, '2017', '2016');
UPDATE wp_terms
SET slug = REPLACE(slug, '2018', '2017');
问题在于年份将自动由另一年份代替。 例如:第一行将2008替换为2009。在第二个版本中,2009年将替换为2010年。但这将影响我的第一次更新,因为2009年将全部替换为2010年。
我的想法是我想同时更改它们:
update wp_terms
set slug = slug - 1
WHERE name LIKE '%20%';
但是它没用,因为我的永久链接变成了
此外,在本专栏中,我还有另一个不必更改的段,只想更改包含年份的段的年数。
如何在字符串的结尾处更改年份?
感谢帮助。
答案 0 :(得分:1)
您可以使用RLIKE
使用正则表达式将子弹与有效的年份值匹配;此代码查找以4位数字结尾的子弹值。然后,我们使用LEFT
和RIGHT
提取字符串和结尾年份,在将这两部分重新组合在一起之前,我们先减去其中的一个:
UPDATE wp_terms
SET slug = CONCAT(LEFT(slug, LENGTH(slug) - 4), RIGHT(slug, 4) - 1)
WHERE slug RLIKE '[[:digit:]]{4}$' AND RIGHT(slug, 4) > 2008