《SQL基础教程》第03章 根据条件查询


条件比较的运算符见下表:

运算符说明例子
=等于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等于nullcol IS NULL
IS NOT NULL不等于nullcol IS NOT NULL
LIKE和pattern相匹配col LIKE 'A%'
NOT LIKE和pattern不匹配col NOT LIKE 'A%'

事实上,null也可以用"="或"!="来表示。本章需要重视的是"like",非常灵活方便。 逻辑运算符有"NOT"、"AND"、"OR"三个,优先顺序是:()>NOT>AND>OR。下面将从BETWEEN 开始讲解。

BETWEEN条件

注意:边界值包含在内。

SQL> select STDNAME,SALARY
  2  from   STUFF
  3  where  SALARY between 2300 and 3450
  4  order by SALARY;

STDNAME      SALARY
-------- ----------
花牧岚         2300
曹草           2500
关玉           2600
江叁讲         2975
周语           3000
穆归营         3000
孙荃           3450

已选择7行。

NOT BETWEEN条件

注意:边界值不包含在内。

SQL> select STDNAME,SALARY
  2  from   STUFF
  3  where  SALARY not between 2300 and 3450
  4  order by SALARY;

STDNAME      SALARY
-------- ----------
张妃           1800
诸葛靓         2100
刘蓓           2250
李斯硼         2250
邓笑评         3850
鲁素           9000

已选择6行。

IN条件

和列表中的任何一个相匹配。

SQL> select STDNAME,SALARY
  2  from   STUFF
  3  where  SALARY in (2300,3450)
  4  order by SALARY;

STDNAME      SALARY
-------- ----------
花牧岚         2300
孙荃           3450

已选择2行。

NOT IN条件

和列表中的任何一个都不相匹配。

SQL> select STDNAME,SALARY
  2  from   STUFF
  3  where  SALARY not in (2300,3450)
  4  order by SALARY;

STDNAME      SALARY
-------- ----------
张妃           1800
诸葛靓         2100
刘蓓           2250
李斯硼         2250
曹草           2500
关玉           2600
江叁讲         2975
周语           3000
穆归营         3000
邓笑评         3850
鲁素           9000

已选择11行。

LIKE条件

任意字符串的匹配。当固定位置匹配时用1个或几个通配符'_'来代替不要求匹配 的字符。

SQL> select STDNAME,BUSINESS
  2  from   STUFF
  3  where  BUSINESS like '_长';

STDNAME  BUSINESS
-------- ----------
江叁讲   科长
邓笑评   科长
孙荃     科长

已选择3行。

SQL> select STDNAME,BUSINESS
  2  from   STUFF
  3  where BUSINESS like '__长';

STDNAME  BUSINESS
-------- ----------
张妃     班组长
诸葛靓   班组长
花牧岚   班组长

已选择3行。

当无所谓位置的匹配时用通配符'%'来代替不要求匹配的部分。 的字符。

SQL> select STDNAME,BUSINESS
  2  from   STUFF
  3  where  BUSINESS like '%长';

STDNAME  BUSINESS
-------- ----------
张妃     班组长
江叁讲   科长
邓笑评   科长
孙荃     科长
诸葛靓   班组长
花牧岚   班组长

已选择6行。

NOT LIKE条件

与LIKE相反的查询。通配符的使用也完全相同。

SQL> select STDNAME,YMD
  2  from   STUFF
  3  where  YMD not like '%0%';

STDNAME  YMD
-------- ----------
鲁素     81.11.17

已选择1行。