SQL以相同的字母开头的记录数

时间:2012-11-21 19:26:52

标签: sql sql-server

所以我在A列的数据库中有数千条记录。

我想看看有多少字母以及所有单个数字开头。

所以我需要一个计数和与之相关的字母。我还希望看到所有两个字母数字组合,即a ab ac ad ae等,以及它们的数量。

还有三个和四个字符等。

1 个答案:

答案 0 :(得分:12)

您通常可以GROUP BY LEFT(columnname, 1)这样的表达式,它允许您执行按任意表达式分组的COUNT()聚合。要使用的最理想的子字符串函数可能取决于您的RDBMS。

SELECT
  UPPER(LEFT(columnname, 1)) AS first_char,
  COUNT(*)
FROM yourtable
GROUP BY UPPER(LEFT(columnname, 1))
ORDER BY first_char ASC

同样,要获得2个角色匹配

SELECT
  UPPER(LEFT(columnname, 2)) AS first_2char,
  COUNT(*)
FROM yourtable
GROUP BY UPPER(LEFT(columnname, 2))
ORDER BY first_2char ASC

有些RDBMS允许您使用GROUP BY中的列别名而不是完整表达式,如简化GROUP BY first_char中所示。

请注意,如果您使用区分大小写的排序规则,我会对它们进行大写,因此您不会为Ab, AB, ab, aB单独匹配。 (我相信默认情况下SQL Server使用case- 不敏感的排序规则)