【发布时间】:2012-11-10 03:21:02
【问题描述】:
所以我在数据库的 A 列中有数千条记录。
我想看看有多少以字母表中的每个字母和所有单个数字开头。
所以我需要一个计数和与之关联的字母。我还想查看所有两个字母数字组合,即 aa ab ac ad ae 等及其计数。
还有三个和四个字符等。
【问题讨论】:
标签: sql sql-server
所以我在数据库的 A 列中有数千条记录。
我想看看有多少以字母表中的每个字母和所有单个数字开头。
所以我需要一个计数和与之关联的字母。我还想查看所有两个字母数字组合,即 aa ab ac ad ae 等及其计数。
还有三个和四个字符等。
【问题讨论】:
标签: sql sql-server
您通常可以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 默认使用大小写不区分排序规则)
【讨论】: