如何仅按某个列值的前几个字母对 SQL 查询进行分组?

Posted

技术标签:

【中文标题】如何仅按某个列值的前几个字母对 SQL 查询进行分组?【英文标题】:How to group SQL queries by only first few letters of a certain column's values? 【发布时间】:2014-08-01 19:30:53 【问题描述】:

我正在使用 Oracle sql 开发人员。我有一个名为data 的表,其中一个名为name 的列。之前,我想按名称对项目进行分组并获得总数,所以我这样做了:

select count(*), name from data group by name;

现在,我想对名称前四个字母相同的所有项目进行分组。例如,我想将名称等于 Chris 的所有行和名称等于 Christine 的所有行组合在一起。上面的查询中是否有任何编辑可以使它成为可能?

【问题讨论】:

【参考方案1】:

只需使用substr() 函数:

select substr(name, 1, 4) as name4, count(*)
from data
group by substr(name, 1, 4);

【讨论】:

【参考方案2】:

获取相同结果的备用查询。

  SELECT name4, COUNT (*)
    FROM (SELECT SUBSTR (name, 1, 4) AS name4 FROM data)
GROUP BY name4;

【讨论】:

以上是关于如何仅按某个列值的前几个字母对 SQL 查询进行分组?的主要内容,如果未能解决你的问题,请参考以下文章

用mysql查询出字段中的前几个字

提取数字前的前几个字母并跳过其余字母

SQL如何查询表中某一列中的数据的前几位

如何优化 SQL 查询以检查表中列值的一致性

THINKPHP怎么查询一张表中某个字段数据重复次数最多的前几名!

sql中如何在where字句里截取某个字段的前几位字符