我有一个表测试,列名具有整数和非整数值
+------------+
| 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)字段.
这是解决方案
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)
| 归档时间: |
|
| 查看次数: |
3680 次 |
| 最近记录: |