当前位置: 首页 > 面试题库 >

从SQL Server中的表中拆分逗号分隔值

邓夕
2023-03-14
问题内容

我有一个SQL table其中有很多记录的记录,我想知道其中有多少个名字,以及其中一个名字多少时间。

表名

Name

john,smith,alax,rock
smith,alax,sira
john,rock
rock,sira

我想找到多少个名字及其数量。

预期的输出应该是这样的

Name           Count

john           2
smith          2
alax           2
rock           3
sira           2

帮助我解决它。


问题答案:
SELECT y.Name, count(*) Count
FROM
(VALUES
('john,smith,alax,rock'),
('smith,alax,sira'),
('john,rock'),
('rock,sira')) x(names)
CROSS APPLY
(
SELECT t.c.value('.', 'VARCHAR(2000)') Name
     FROM (
         SELECT x = CAST('<t>' + 
               REPLACE(x.names, ',', '</t><t>') + '</t>' AS XML)
     ) a
     CROSS APPLY x.nodes('/t') t(c)
     ) y
GROUP BY y.Name

结果:

Name   Count
alax   2
john   2
rock   3
sira   2
smith  2


 类似资料:
  • 问题内容: 我的数据库中有列,其中的值如下所示: 在虚拟列中没有任何编号。逗号分隔的值可以出现。我尝试了以下查询,但它正在创建重复的结果。 我不明白这个问题。谁能帮忙? 问题答案: 非常适合我- 还有许多其他方法可以实现它。阅读将单个逗号分隔的字符串拆分成行。 *关于使用列而不是单个字符串值时的重复项的 *更新 。只见PRIOR子句中使用DBMS_RANDOM的摆脱循环回路的在这里 尝试以下方法

  • 问题内容: 我返回的值包含255个逗号分隔的值。有没有一种简单的方法可以将其拆分为不具有255 substr的列? 到 问题答案: 您可以使用: 我建议您在Excel(或其他电子表格)中生成255个数字的列,并使用电子表格生成SQL代码。

  • 问题内容: 我的文字如下: 谁能告诉我我必须使用哪些正则表达式分度数才能获得以下结果: 我在这里阅读Sun教程,直到“ Matcher类的方法”为止,但我仍然茫然。谢谢! 如果是这样,那将很容易,但是不幸的是,事实并非如此。有任何想法吗? 问题答案: 您可以直接使用split()方法,如下所示: (请注意,这将返回长度为5的数组,第一个位置为空字符串) 或者,如果您想使用模式/匹配器,可以这样做:

  • 我在文本文件中有以下内容要导入ArrayList: 澳大利亚,2 加纳,4 中国,3 西班牙,1 我的ArrayList由来自另一个类Team的对象组成,该类具有TeamName和排名字段。我可以获取以下内容以将String和int导入团队名称,但我无法分离应该是团队排名的数字: 我猜我必须在该行的某个地方使用拆分,或者将字符串转换为整数??

  • 问题内容: 您可以使用RegEx将逗号分隔的字符串解析为MySQL中的临时表吗? 问题答案: 这个问题与Mysql可以拆分列差不多吗? MySQL没有拆分字符串函数,因此您必须解决。使用上面答案页中列出的方法之一分割数据后,您就可以对数据进行任何处理。 您可以遍历该自定义函数,并在返回空值时中断它,您必须播放并学习一些语法(或者至少是我愿意),但是mysql中FOR循环的语法是: http://w

  • 在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如: