我有一个关于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'的两行
????
谢谢您!
3条答案
按热度按时间pengsaosao1#
因为“zl”大于“z”。z只是一个字符,所以只返回小于z或具有z值的值。你想用这个查询实现什么?
7tofc5zh2#
你试过了吗
SELECT * FROM friends WHERE region <= 'zl';
?从计算机的Angular 来看,
'z' < 'zl'
roqulrg33#
你能告诉我为什么吗?
如果添加一个记录
Z
,并按区域按字母顺序排列这些行,您希望ZL
在…之前或之后Z
? 很明显它会在后面出现,所以它不符合你的标准。如果只考虑第一个字符,请将其添加到条件中:
我也会
Z
显式使用大写字母,以防数据库设置使其成为区分大小写的搜索。