在mysql的单行中显示数字和非数字列值的计数

Anu*_*rma 6 mysql sql

我有一个表测试,列名具有整数和非整数值

+------------+
| names      |
+------------+
| 123        |
| 123abc     |
| 89         |
| dkkjdk     |
| dkdn       |
+------------+
Run Code Online (Sandbox Code Playgroud)

我想像这样在一行中显示整数和非整数值的计数

integer_count non_integer_count
2               3
Run Code Online (Sandbox Code Playgroud)

我试图使用此查询打印整数值

select cast(names as signed) as int_val from test;
Run Code Online (Sandbox Code Playgroud)

但我得到了这个结果

+---------+
| int_val |
+---------+
|     123 |
|     123 |
|      89 |
|       0 |
|       0 |
+---------+
Run Code Online (Sandbox Code Playgroud)

name字段是varchar(20)字段.

Vai*_*mar 5

这是解决方案

SELECT COUNT(CASE WHEN not names REGEXP '^[0-9]+$' THEN 1 END) AS ALPHA, COUNT(CASE WHEN names REGEXP '^[0-9]+$' THEN 1 END) AS DIGIT FROM test;
Run Code Online (Sandbox Code Playgroud)

输出量

+-------+-------+
| ALPHA | DIGIT |
+-------+-------+
|     3 |     2 |
+-------+-------+
Run Code Online (Sandbox Code Playgroud)