我想创建一个查询,列出最无法回答的问题(有标签)排序的标签,但是当标签存储为空格分隔varchar
时,我理解它是SQL Server (which StackExchange uses)没有分割字符串的功能,我对如何继续有点不确定。我写了这个:
SELECT DISTINCT Tags from Posts WHERE AnswerCount = 0;
正确返回标签,但它们都按帖子分组:
我已经环顾了很多但every result我发现创建了一个函数作为分割标记的解决方案,但是你不能在dataexchange上创建函数,这是不可能的。还有另一种方法可以将所有标签放入一列吗?
答案 0 :(得分:2)
您可以使用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有一个很好的内置机制来存储列表。它不是一个字符串。它被称为表。如果你有选择的话,你应该使用它。