Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用LIKE-mysql计算两个文本值_Mysql - Fatal编程技术网

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

使用LIKE-mysql计算两个文本值,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和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%”或城市如“A%”的位置


。。。上次我检查时,名称不可能同时以Z和a开头。

我认为您不能在案例陈述中使用以下形式
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%';

因为你必须使用像“A%”一样的
城市或像“Z%”一样的城市才能像预期的那样工作,即使用两个不同的LIKE语句。

他必须有两个
LIKE
语句才能工作。我尝试添加两个LIKE并使用OR,但两个值仍然返回0行。那么有没有办法在一个值中计算两个文本值查询?谢谢你提供更干净的版本!
+------+------+
| id   | name |
+------+------+
|    1 | AAA  |
|    3 | AAB  |
+------+------+