因此,我试图在一次查询中统计数据库中以 Z 和 A 开头的城市数量。通过一些谷歌搜索,我想到了这个查询:
SELECT COUNT(CASE city WHEN 'Z%' then 1 else null end) as count_Z,
COUNT(CASE city WHEN 'A%' then 1 else null end) as count_A
FROM city
WHERE city LIKE 'Z%' AND 'A%';
但是,当我应该为 Z 返回 19 行而为 A 返回 43 行时,我没有得到任何返回。
有人能帮忙吗?
最佳答案
我认为您无法在案例陈述中使用以下形式 Z%
。实现此目的的一种方法是使用 SUM()
而不是 case:
SELECT SUM(name LIKE 'A%') countA,
SUM(name LIKE 'Z%') countZ
FROM city;
请注意,当您检查两个值时,您必须使用两个单独的 LIKE
语句。考虑下表:
+------+------+
| id | name |
+------+------+
| 1 | AAA |
| 2 | ZZZ |
| 3 | AAB |
| 4 | ZZA |
+------+------+
以下查询:
SELECT * FROM <table>
WHERE name LIKE 'A%' OR 'Z%';
会返回:
+------+------+
| id | name |
+------+------+
| 1 | AAA |
| 3 | AAB |
+------+------+
因为您必须使用 city LIKE 'A%' OR city LIKE 'Z%'
才能按预期工作,即使用两个不同的 like 语句。
关于mysql - 使用 LIKE 计算两个文本值 - mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28553729/