条件比较的运算符见下表:
运算符 | 说明 | 例子 |
---|---|---|
= | 等于 | 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>select
STDNAME,SALARY 2from
STUFF 3where
SALARY between 2300 and 3450 4order by
SALARY; STDNAME SALARY -------- ---------- 花牧岚 2300 曹草 2500 关玉 2600 江叁讲 2975 周语 3000 穆归营 3000 孙荃 3450 已选择7行。
注意:边界值不包含在内。
SQL>select
STDNAME,SALARY 2from
STUFF 3where
SALARY not between 2300 and 3450 4order by
SALARY; STDNAME SALARY -------- ---------- 张妃 1800 诸葛靓 2100 刘蓓 2250 李斯硼 2250 邓笑评 3850 鲁素 9000 已选择6行。
和列表中的任何一个相匹配。
SQL>select
STDNAME,SALARY 2from
STUFF 3where
SALARY in (2300,3450) 4order by
SALARY; STDNAME SALARY -------- ---------- 花牧岚 2300 孙荃 3450 已选择2行。
和列表中的任何一个都不相匹配。
SQL>select
STDNAME,SALARY 2from
STUFF 3where
SALARY not in (2300,3450) 4order by
SALARY; STDNAME SALARY -------- ---------- 张妃 1800 诸葛靓 2100 刘蓓 2250 李斯硼 2250 曹草 2500 关玉 2600 江叁讲 2975 周语 3000 穆归营 3000 邓笑评 3850 鲁素 9000 已选择11行。
任意字符串的匹配。当固定位置匹配时用1个或几个通配符'_'来代替不要求匹配 的字符。
SQL>select
STDNAME,BUSINESS 2from
STUFF 3where
BUSINESS like '_长'; STDNAME BUSINESS -------- ---------- 江叁讲 科长 邓笑评 科长 孙荃 科长 已选择3行。 SQL>select
STDNAME,BUSINESS 2from
STUFF 3where
BUSINESS like '__长'; STDNAME BUSINESS -------- ---------- 张妃 班组长 诸葛靓 班组长 花牧岚 班组长 已选择3行。
当无所谓位置的匹配时用通配符'%'来代替不要求匹配的部分。 的字符。
SQL>select
STDNAME,BUSINESS 2from
STUFF 3where
BUSINESS like '%长'; STDNAME BUSINESS -------- ---------- 张妃 班组长 江叁讲 科长 邓笑评 科长 孙荃 科长 诸葛靓 班组长 花牧岚 班组长 已选择6行。
与LIKE相反的查询。通配符的使用也完全相同。
SQL>select
STDNAME,YMD 2from
STUFF 3where
YMD not like '%0%'; STDNAME YMD -------- ---------- 鲁素 81.11.17 已选择1行。