![]() |
1
1
这是一个教训 运算符优先级 . 你可能熟悉这样一种想法,在标准算术中,“1+23”得到7,而不是9,因为“23”是先计算出来的。如果我们加上括号,“(1+2)3”得到9,因为“(1+2)”是先计算出来的。 这同样适用于带有“and”和“or”的布尔运算,除非我们加上括号,否则“and”是首先计算出来的。 所以“(学生名如“%ae%”或学生名如“%ph%”和年龄!=19)”将首先将“学生名如“%ph%”和年龄!=19”归为一个条件;然后,它将匹配其中的行 任何一个 没错, 或 其中“学生名如“%ae%”为真——名字中有“ae”的学生可以是任何年龄段的学生。 添加括号时,首先计算“or”,它将匹配其中的行 二者都 “(像“%ae%”这样的学生名或像“%ph%”这样的学生名)是真的 和 “年龄!=19”是正确的——无论姓名如何,19岁的人都是不允许的。 由于这是一个容易犯的错误,我建议在混合“and”和“or”时总是加上括号,以明确意图。 |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |