条件比较的运算符见下表:
| 运算符 | 说明 | 例子 |
|---|---|---|
| = | 等于 | col=100 |
| != <> ^= | 不等于 | col!=100 |
| >= | 大于等于 | col>=100 |
| <= | 小于等于 | col<=100 |
| > | 大于 | col>100 |
| < | 小于 | col<100 |
| BETWEEN a AND b | 从a到b的范围之内(包括a和b) | col BETWEEN 100 AND 200 |
| NOT BETWEEN a AND b | 从a到b的范围之外(不包括a和b) | col NOT BETWEEN 100 AND 200 |
| IN (list) | 和列表中的任何一个相等 | col IN (100,200) |
| NOT IN (list) | 和列表中的任何一个都不相等 | col NOT IN (100,200) |
| IS NULL | 等于null | col IS NULL |
| IS NOT NULL | 不等于null | col IS NOT NULL |
| LIKE | 和pattern相匹配 | col LIKE 'A%' |
| NOT LIKE | 和pattern不匹配 | col NOT LIKE 'A%' |
事实上,null也可以用"="或"!="来表示。本章需要重视的是"like",非常灵活方便。 逻辑运算符有"NOT"、"AND"、"OR"三个,优先顺序是:()>NOT>AND>OR。下面将从BETWEEN 开始讲解。
注意:边界值包含在内。
SQL>selectSTDNAME,SALARY 2fromSTUFF 3whereSALARY between 2300 and 3450 4order bySALARY; STDNAME SALARY -------- ---------- 花牧岚 2300 曹草 2500 关玉 2600 江叁讲 2975 周语 3000 穆归营 3000 孙荃 3450 已选择7行。
注意:边界值不包含在内。
SQL>selectSTDNAME,SALARY 2fromSTUFF 3whereSALARY not between 2300 and 3450 4order bySALARY; STDNAME SALARY -------- ---------- 张妃 1800 诸葛靓 2100 刘蓓 2250 李斯硼 2250 邓笑评 3850 鲁素 9000 已选择6行。
和列表中的任何一个相匹配。
SQL>selectSTDNAME,SALARY 2fromSTUFF 3whereSALARY in (2300,3450) 4order bySALARY; STDNAME SALARY -------- ---------- 花牧岚 2300 孙荃 3450 已选择2行。
和列表中的任何一个都不相匹配。
SQL>selectSTDNAME,SALARY 2fromSTUFF 3whereSALARY not in (2300,3450) 4order bySALARY; STDNAME SALARY -------- ---------- 张妃 1800 诸葛靓 2100 刘蓓 2250 李斯硼 2250 曹草 2500 关玉 2600 江叁讲 2975 周语 3000 穆归营 3000 邓笑评 3850 鲁素 9000 已选择11行。
任意字符串的匹配。当固定位置匹配时用1个或几个通配符'_'来代替不要求匹配 的字符。
SQL>selectSTDNAME,BUSINESS 2fromSTUFF 3whereBUSINESS like '_长'; STDNAME BUSINESS -------- ---------- 江叁讲 科长 邓笑评 科长 孙荃 科长 已选择3行。 SQL>selectSTDNAME,BUSINESS 2fromSTUFF 3whereBUSINESS like '__长'; STDNAME BUSINESS -------- ---------- 张妃 班组长 诸葛靓 班组长 花牧岚 班组长 已选择3行。
当无所谓位置的匹配时用通配符'%'来代替不要求匹配的部分。 的字符。
SQL>selectSTDNAME,BUSINESS 2fromSTUFF 3whereBUSINESS like '%长'; STDNAME BUSINESS -------- ---------- 张妃 班组长 江叁讲 科长 邓笑评 科长 孙荃 科长 诸葛靓 班组长 花牧岚 班组长 已选择6行。
与LIKE相反的查询。通配符的使用也完全相同。
SQL>selectSTDNAME,YMD 2fromSTUFF 3whereYMD not like '%0%'; STDNAME YMD -------- ---------- 鲁素 81.11.17 已选择1行。