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

jon*_*odo 2 sql sql-server

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

我想看看有多少从字母表中的每个字母和所有单个数字开头.

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

还有三个和四个字符等.

Mic*_*ski 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
Run Code Online (Sandbox Code Playgroud)

同样,要获得2个字符的匹配

SELECT
  UPPER(LEFT(columnname, 2)) AS first_2char,
  COUNT(*)
FROM yourtable
GROUP BY UPPER(LEFT(columnname, 2))
ORDER BY first_2char ASC
Run Code Online (Sandbox Code Playgroud)

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

请注意,Ab, AB, ab, aB如果您使用区分大小写的排序规则,我会将它们设置为大写,以便您不会获得单独的匹配项.(我相信默认情况下SQL Server使用不区分大小写的排序规则)