比较运算符 (Visual Database Tools)

在搜索条件中,可以使用任何标准 SQL 运算符。

在搜索条件中使用运算符时,应用下面的规则:

  • 比较中所使用数据的数据类型必须匹配。 即文本只能比较文本,数字只能比较数字,以此类推。 某些数据库管理系统允许使用函数或关键字(如 CAST)将数据暂时转换成另一种数据类型。 有关详细信息,请参考数据库文档。

  • 比较文本数据时,结果取决于当前使用的字符集。 例如,如果表是使用斯堪的纳维亚语字符集创建的,搜索的结果可能会不同,这取决于当前的字符集(代码页)是斯堪的纳维亚语字符集还是另外一种字符集。

  • 如果比较值是空值,则结果未知。 空值不与任何值匹配,包括其他实例的空值。 例如,如果搜索以字母“M”或“M”以后 (name >= 'M') 字母开头的名称,并且某些行不包含值,则无论使用何种比较运算符这些行都不显示。

下表汇总了为标准 SQL 定义的搜索条件运算符。

提示

本主题中的信息以标准 SQL-92 的规则为基础。 不过,每个数据库可以按自己的方式实现 SQL。 因此,这里提供的指南不一定适用于每种情况。 如果对如何将运算符用于某个特定数据库有疑问,请参见所用数据库的文档。

运算符

含义

“条件”窗格示例*

SQL 窗格示例

=

等于

= 'Smith'
SELECT fname, lname
FROM employees
WHERE lname = 'Smith'

<> !=

不等于

<> 'Active'
SELECT fname, lname
FROM employees
WHERE status <> 'Active'

>

大于

> '01 Jan 1995'**
SELECT fname, lname
FROM employees
WHERE hire_date >
 '12/31/90'

<

小于

< 100
SELECT fname, lname
FROM employees
WHERE job_lvl < 100

>= !<

大于或等于

>= 'T'
SELECT au_lname
FROM authors
WHERE au_lname >= 'T'

<= !>

小于或等于

<= '01 Jan 1995'**
SELECT fname, lname
FROM employees
WHERE hire_date <= 
 '01/01/95'

BETWEEN expr1 AND expr2

测试值的范围

BETWEEN 
'01 Jan 1995' 
AND 
'31 Dec 1995'**
SELECT fname, lname
FROM employees
WHERE hire_date 
 BETWEEN '12/31/90'
 AND '12/31/91'

IS [NOT] NULL

测试列的内容或表达式的结果是否为空

IS NULL
SELECT fname, lname
FROM employees
WHERE photo_on_file IS NULL

[NOT] LIKE

执行模式匹配(通常只限于字符数据类型)

LIKE ('MAC%')
SELECT fname, lname
FROM employees
WHERE lname LIKE ('MAC%')

expr1 [NOT] IN (val1, val2, ...)– 或 –expr1 [NOT] IN (subquery)

通过测试 expr1 是出现在值的列表中还是出现在子查询的结果集中,匹配特定值的列表

IN ('SW', 'SE')
supplier_id IN
  (subquery)
SELECT fname, lname
FROM employees
WHERE sales_region IN ('SW', 'SE')
SELECT product_name
FROM products
WHERE supplier_id IN
  (SELECT supplier_id
  FROM supplier
  WHERE (country = 'Sweden'))

ANY (SOME)

测试子查询结果集中的一个或多个行是否满足指定的条件(ANY 和 SOME 是同义词;在创建 SQL 语句时,查询和视图设计器将使用 ANY)。

<> ANY (subquery)
SELECT au_lname, au_fname
FROM authors
where city <> any
 (SELECT city FROM publishers)

ALL

测试子查询结果集的所有行是否都满足指定的条件

advance > ALL (subquery)
SELECT title FROM titles
where advance > all
  (SELECT advance FROM
   publishers,titles
  where titles.pub_id 
   = publishers.pub_id
  AND pub_name = 
   'Alogdata Infosystems')

[NOT] EXISTS

测试子查询是否返回任何结果(不只是特定的结果)

EXISTS (subquery)
SELECT product_name
FROM products
WHERE EXISTS
  (SELECT * FROM 
   orders, products
  WHERE orders.prod_id 
  = products.prod_id)

*   为了清楚起见,“条件”窗格示例中只包括每个运算符的一个示例,且不指出所搜索的数据列。

**   使用 **Windows“区域设置”**对话框中指定的格式,可以在“条件”窗格中输入日期。 有关详细信息,请参见输入搜索值规则

请参见

其他资源

设计查询和视图

参考 (Visual Database Tools)