我想要进行一个查询,该查询将列出按最未回答的问题(具有该标签)排序的标签,但是,因为标签存储为空格分隔的 varchar
并且据我了解SQL Server(which StackExchange uses)没有分割字符串的函数,我有点不确定如何继续。我写的是:
SELECT DISTINCT Tags from Posts WHERE AnswerCount = 0;
它正确返回标签,但它们都是按帖子分组的:
我环顾四周,但是 every result我发现可以创建一个函数作为分割标签的解决方案,但是您无法在数据交换上创建函数,因此这是不可能的。还有另一种方法可以将所有标签放入一列中吗?
最佳答案
您可以使用 like
通过低效联接来实现此目的:
select t.TagName, count(p.Tags)
from Tags t left join
Posts p
on p.Tags like '%' + t.TagName + '%'
where p.AnswerCount = 0
group by t.TagName;
您确实应该使用一个单独的联结表,PostTags
,每个帖子一行和该帖子上的每个标签。这种类型的查询会简单得多。 SQL 有一个很好的内置机制来存储列表。它不是一个字符串。它被称为 table 。如果有选择的话,您应该使用它。
关于sql - 拆分数据浏览器帖子中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24718828/