统计字段中包含字符串的记录数

【问题】
表的结构
id,zb1,zb2
1, abcd, adfg
2, adef’,edf
3,ae, acd
4,bde, bc

想统计出 zb1 和 zb2 字段中分别包含 a,b,c,d,e,f,g 等值的记录数

得到的结果为
zb1     zb2
a:3     a:2
b:2     b:1
c:1     c:2
d:3    d:3
e:1    e:0
f:1     f:1
g:0   g:1

附表结构
CREATE TABLE `cs` (
  `id` int(5) NOT NULL,
  `zb1` varchar(10) NOT NULL,
  `zb2` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

# 导出表中的数据 `cs`

INSERT INTO `cs` VALUES (1, ‘abcd’, ‘adfg’);
INSERT INTO `cs` VALUES (2, ‘adef’, ‘edf’);
INSERT INTO `cs` VALUES (3, ‘ae’, ‘acd’);
INSERT INTO `cs` VALUES (0, ‘bde’, ‘bc’);

【回答】
SQL 做这种拆串的事很麻烦,动态结果集就更麻烦。数据量不大可以读出来处理,用 SPL 实现如下:

A
1$select zb1,zb2 from tb
2=A1.conj(zb1.split(""))
3=A1.conj(zb2.split(""))
4=(A2|A3).id()
5=A4.new(~/":"/A2.count(~==A4.~):zb1,~/":"/A3.count(~==A4.~):zb2)

A1: 读取数据表

1png

A2,A3: 分别将 zb1 和 zb2 字段的每条记录拆分字符再并

A4: 取出不重复成员

A5: 生成新序表,统计每个字段中包含 a,b,c,d,e,f,g 等值的记录数

2png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值