这儿没有 MS-SQLServer 可选,就选择了 mysql
字段 A
aaaa-cc-a
bvdsv-bv-s
vdsavd-cc-a
csaccc-cc-c-c
fsafe-ff-s
csacsa-cc-a
gafff-bv-s
ff-s,cc-c-c,cc-a,bv-s,cc-a 这些是未知的,唯一特点就是第一个"-"后面的值。
需要得到的数据就是分组统计-后面数据有多少
最后统计得到的数据
cc-a 2
bv-s 2
cc-a 1
cc-c-c 1
ff-s 1
1
LeeSeoung 2019-05-28 13:49:35 +08:00
正则+groupby 或者 index+substr+groupby
|
2
wangjincp OP 谢谢各位了,已经找到解决方案了!!!
非常感谢各位!!! SET QUOTED_IDENTIFIER ON GO --创建函数 Create FUNCTION [dbo].[GetSubStrBySpint] ( @String NVARCHAR(300), @split NVARCHAR(10) ) RETURNS NVARCHAR(1024) AS BEGIN DECLARE @location INT DECLARE @start INT DECLARE @seed INT SET @String = LTRIM(RTRIM(@String)) SET @start = CHARINDEX(@split, @String) SET @seed = LEN(@split) SET @start += @seed SET @location = LEN(@String) - @start + @seed RETURN SUBSTRING(@String, @start, @location) END 我自己写了个函数 然后在查询就好了 谢谢各位!!! 然后直接调用 select * from (select dbo.GetSubStrBySpint([fieldA] , '.') as hz,count(1) as num from Table group by dbo.GetSubStrBySpint([fieldA] , '.')) as c order by c.num desc |
3
chitanda 2019-05-28 17:33:42 +08:00 via Android
要想省事,升级到 8.0 或者换 Maria
|