今天,我需要从一个表中获取一些数据,该表中另一个字符串中不止一个字符串出现。基本上,我需要从一个表中查找所有深度超过3级(即带有3个斜杠)的URL,但是意识到在MySQL中没有函数可以执行此操作。我找到了另一种方法,但它使我思考如何可能。
找到解决方案并不是很困难,我要做的就是找出URL字符串的长度,然后减去去除斜杠的字符串的长度。该MySQL语句将为您提供URL和表中该URL中的斜杠数。
SELECT url, (LENGTH(url)-LENGTH(REPLACE(url, '/', ''))) AS depth FROM TABLE;
这对于像斜线这样的单个字符串来说效果很好,但是如果要对多个字符串执行相同的操作,则需要将差异除以字符串的长度。这是一个例子。
SELECT body, ROUND((LENGTH(body)-LENGTH(REPLACE(body, 'text', '')))/LENGTH('text')) AS depth FROM TABLE;
这将为您提供表中每个正文字段中单词“文本”出现的次数。