Z-Blog标签清理小记 通过SQL清理多余标签

😂 这篇文章最后更新于1908天前,您需要注意相关的内容是否还可用。

标签是文章的第二个维度,网站除了固有的分类之外还可以使用标签对文章进行细分。但是今天发现z-blog后台删除某标签后并不会关联清理帖子数据表中的标签字段。再加上我用插件进行标签合并等操作,合并操作也并不会清理帖子字段中的标签ID,只是把标签表中的ID删除然后合并后的新ID加到帖子表的标签字段,是追加在原有字段后的,因此一打开数据库发现居然有的帖子有四五个标签ID。但其实我每个帖子基本一个标签,多出来的属于冗余ID。于是我在想着怎么清除。

网站标签已经被自己清理到只剩几十个了,因此第一步我到 标签表中取得标签ID,依次更新,这样所存在的帖子标签都被更新为一个。

UPDATE zbp_post SET log_Tag='{133}' WHERE log_Tag like '%{133}%'

按理说现在就只清空不存在的标签ID即可,一般一个标签最大字符长度为5,因为帖子ID已是3位数,两个标签ID的例如{1}{2}字符长度最少为6,运用length将多余字符串长度大于5的进行更新为空字符串。

UPDATE zbp_post SET log_Tag=''  WHERE LENGTH(log_Tag)>5

剩下的运用substr截取ID字符串,not in (可用标签ID )将不可用标签筛选出来并更新为空。由于有三位数的ID,因此将三位数ID截取前2个数放在IN中

UPDATE zbp_post SET log_Tag='' WHERE SUBSTR(log_Tag,2,2) not in(11,12,13)