在搜索条件中,可以使用任何标准 SQL 运算符。
在搜索条件中使用运算符时,应用下面的规则:
比较中所使用数据的数据类型必须匹配。 即文本只能比较文本,数字只能比较数字,以此类推。 某些数据库管理系统允许使用函数或关键字(如 CAST)将数据暂时转换成另一种数据类型。 有关详细信息,请参考数据库文档。
比较文本数据时,结果取决于当前使用的字符集。 例如,如果表是使用斯堪的纳维亚语字符集创建的,搜索的结果可能会不同,这取决于当前的字符集(代码页)是斯堪的纳维亚语字符集还是另外一种字符集。
如果比较值是空值,则结果未知。 空值不与任何值匹配,包括其他实例的空值。 例如,如果搜索以字母“M”或“M”以后 (name >= 'M') 字母开头的名称,并且某些行不包含值,则无论使用何种比较运算符这些行都不显示。
下表汇总了为标准 SQL 定义的搜索条件运算符。
提示
本主题中的信息以标准 SQL-92 的规则为基础。 不过,每个数据库可以按自己的方式实现 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)