在数据浏览器帖子中拆分标签
Posted
技术标签:
【中文标题】在数据浏览器帖子中拆分标签【英文标题】:Splitting up tags in data explorer posts 【发布时间】:2014-09-03 07:47:11 【问题描述】:我想做一个查询,它将列出按最未回答的问题排序的标签(具有该标签),但是由于标签存储为空格分隔 varchar
并且据我所知 SQL Server(@ 987654321@) 没有拆分字符串的功能,我有点不确定如何继续。我是这样写的:
SELECT DISTINCT Tags from Posts WHERE AnswerCount = 0;
正确返回标签,但它们都按帖子分组:
我环顾四周,但every result 我发现创建了一个函数作为拆分标签的解决方案,但是您不能在 dataexchange 上创建函数,因此这是不可能的。还有其他方法可以将所有标签放在一列中吗?
【问题讨论】:
如果你有一个通过正则表达式拆分它们的标签表会很容易。***.com/questions/8928378/using-regex-in-sql-server 你有单独的标签表吗? @GordonLinoff 是的,但据我所知,它与帖子表之间没有关系 相关:meta.***.com/questions/265460/…,posttags表中posts和tags的关系 【参考方案1】:您可以使用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 有一个很好的内置机制来存储列表。它不是一个字符串。它被称为表。如果您有选择,您应该使用它。
【讨论】:
对名称稍作调整并删除空格,效果很好,非常感谢!以上是关于在数据浏览器帖子中拆分标签的主要内容,如果未能解决你的问题,请参考以下文章