mysql - 使用 LIKE 计算两个文本值 - mysql

标签 mysql

因此,我试图在一次查询中统计数据库中以 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/

相关文章:

mysql - 在 mysql 中替换时保留一列

mysql - SQL查询以获取特定 parent 的 child 的平均值

java - 包括 NOT IN 条件下的省略记录

java - 无法连接到 MariaDB 数据库 [JAVA]

Ubuntu 11.04 - 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (13)

python - mysql 中的同一行(nginx+tornado+mysqldb)

javascript - 为什么jquery被禁用

php - 如何防止 PHP 中的 SQL 注入(inject)?

MySQL:如何将一个数据库变为只读?

php - Bluehost MySQL 国家/地区特定字符编码