sql按照首字符分组

又是一条sql语句。

前两天,朋友问我一个问题:若表里面的数据已经排过序了(字符串排序),我要怎么查询才能够从里面按照首字母分组呢?例如(a11,a12,a34,b22,b34)=> [(a11,a12,a34),(b22,b34)]。 当时我一时间没有想出了,只能说了一个拙劣的方案: like 'a%'。既然字母开头分组,那就要查询26次了。

后来的后来,我突然想到,首字母排序,这么常用的东西,不可能还要这么麻烦啊,肯定有好方案的,说不定sql就有呢?据我所知,标准化sql,有很多内置函数。还是那样,简单搜索一下,发现还真有。 left(a, 1)其中a就是相应字段。整条语句是这样的。

select count(*),left(a, 1) from table group by left(a, 1)

上面的查询告诉我们,字段a的首字母开头的数量各有多少。例如,上面例子的查询结果是 [ {3,a}, {2,b} ],前三个是a,后两个是b。知道了各字母开头有多少个,我们就可以通过跳帧,可以成功分组。

成功。

省事的sql。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值