首页 > 解决方案 > MySQL返回错误的结果

问题描述

我对 SELECT FROM WHERE 语句有疑问,它返回了不好的结果。

这是我的朋友表:

+----------+-----------+------------+--------+--------+-------+
| lastname | firstname | callprefix | phone  | region | zip   |
+----------+-----------+------------+--------+--------+-------+
| Lužný    | Bob       |        602 | 111222 | OL     | 79821 |
| Matyáš   | Bob       |        773 | 123456 | BR     | NULL  |
| Strouhal | Fido      |        300 | 343434 | ZL     | 76701 |
| Přikryl  | Tom       |        581 | 010101 | PL     | 72000 |
| Černý    | Franta    |        777 | 000999 | OL     | 79801 |
| Zavadil  | Olda      |        911 | 111311 | OL     | 79604 |
| Berka    | Standa    |        604 | 111234 | ZL     | 72801 |
| Vlcik    | BbB       |        736 | 555444 | KV     | 35210 |
+----------+-----------+------------+--------+--------+-------+

这是我的查询。

SELECT * FROM friends WHERE region <= 'z';

我希望区域 ZL 的行应该存在,但它们不是。你能告诉我为什么吗?

结果是:

+----------+-----------+------------+--------+--------+-------+
| lastname | firstname | callprefix | phone  | region | zip   |
+----------+-----------+------------+--------+--------+-------+
| Lužný    | Bob       |        602 | 111222 | OL     | 79821 |
| Matyáš   | Bob       |        773 | 123456 | BR     | NULL  |
| Přikryl  | Tom       |        581 | 010101 | PL     | 72000 |
| Černý    | Franta    |        777 | 000999 | OL     | 79801 |
| Zavadil  | Olda      |        911 | 111311 | OL     | 79604 |
| Vlcik    | BbB       |        736 | 555444 | KV     | 35210 |
+----------+-----------+------------+--------+--------+-------+

当我尝试这个查询时:

SELECT * FROM friends WHERE region >= 'z';

结果包含 region = 'ZL' 的两行

???

谢谢!

标签: mysqlsql

解决方案


因为“ZL”大于“Z”。Z 只是一个字符,因此只会返回小于 Z 或 Z 值的值。你想用这个查询来实现什么?


推荐阅读