通过SQL查询对逗号加入列进行分组
发布时间:2021-03-07 14:11:52 所属栏目:MsSql教程 来源:网络整理
导读:我的表结构如下所示,“邮件”列可以包含多个用逗号连接的电子邮件 数据(INT) 邮件(VARCHAR(200)) [Data] [Mail] 1 m1@gmail.com,m2@hotmail.com 2 m2@hotmail.com,m3@test.com 安培;我需要生成如下所示的报告,计算每封电子邮件的每一行 [Mail] [Count] m1@gma
我的表结构如下所示,“邮件”列可以包含多个用逗号连接的电子邮件 数据(INT) 邮件(VARCHAR(200))
&安培;我需要生成如下所示的报告,计算每封电子邮件的每一行
那么生成如上所述的sql(服务器)查询是什么?我也无法改变表结构. 解决方法仅使用没有XML或CTE的CHARINDEX,字符串拆分更快.样本表 create table #tmp ([Data] int,[Mail] varchar(200)) insert #tmp SELECT 1,'m1@gmail.com,m2@hotmail.com,other,longer@test,fifth' UNION ALL SELECT 2,'m2@hotmail.com,m3@test.com' UNION ALL SELECT 3,'m3@single.com' UNION ALL SELECT 4,'' UNION ALL SELECT 5,null 查询 select single,count(*) [Count] from ( select ltrim(rtrim(substring(t.mail,v.number+1,isnull(nullif(charindex(',',t.mail,v.number+1),0)-v.number-1,200)))) single from #tmp t inner join master..spt_values v on v.type='p' and v.number <= len(t.Mail) and (substring(t.mail,v.number,1) = ',' or v.number=0) ) X group by single 你提供的唯一部件是 > #tmp:你的桌名> #mail:列名 (编辑:应用网_常德站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
- alter table alter SQL的SQL Server性能更改数据
- .net – EF Code First从IQueryable中删除批次?
- sql – 如何将表模式和约束复制到不同数据库的表
- sql-server – 如何在DST之前或之后的日期获得UT
- sql-server – sql server express localdb.msi离
- 如何在SQL Server中将多行连接成一列?
- sql – Oracle Analytic函数 – 重置窗口子句
- sql-server – 在专用数据库服务器上,为操作系统
- sql存储过程有何好处?怎样创建和使用?
- 使用.NET或MS SQL模拟MySql的密码()加密
热点阅读