标签是文章的第二个维度,网站除了固有的分类之外还可以使用标签对文章进行细分。但是今天发现 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)