返回介绍

3 条件查询

发布于 2025-02-20 13:00:27 字数 5796 浏览 0 评论 0 收藏 0

使用「SELECT」和「FROM」执行的查询叙述,是把你在「FROM」子句指定表格里所有的纪录传回来。资料库最大的好处就是可以随时依照需要查询部份纪录资料,你可以搭配「WHERE」子句执行查询条件的设定:

3.1 比较运算子

要使用「WHERE」执行查询条件的设定,你会使用下列基础的比较运算子:

|优先顺序 |运算子| 说明|
|1| =| 等于|
|1| `| 等于| |1| != | 不等于| |1| ``| 大于| |1| >=`| 大于等于|

注:``运算子在后面「NULL 值的判断」会讨论。

使用这些基础的比较运算子就可以完成一些简单的条件设定:

设定日期资料型态的条件也是很常见的:

3.2 逻辑运算子

查询条件的设定,有时候会像前面讨论的单一条件一样,并不会太复杂;不过也很常遇到在一个查询的需求中,需要设定一个以上的条件,那你就会用到下列的运算子:

优先顺序运算子说明
1NOT
2&&而且
2AND而且
3| |
3OR
3XOR互斥

「NOT」运算子比较特殊一些,在一般的需求中,比较不会用到它。以下列的需求来说:

如果想要查询国家代码是「TWN」,而且人口数量小于十万的城市,就必须设定两个条件,而两个条件之间,依照「而且」的需求,使用「AND」来结合两个条件:

如果想要查询国家代码是「TWN」或是「USA」的城市,在两个条件之间依照「或」的需求,使用「OR」来结合两个条件:

在逻辑运算子的介绍中,它们也同样有「优先顺序」的。如果你想要查询在欧洲(Europe) 或非洲(Aftica) 国家,而且人口数要小于一万。使用下列的查询条件所得到的资料,跟你想要的却不一样:

如果有多个查询条件的设定,全部都是「AND」或全部都是「OR」的话,就没有这类问题;如果查询条件中,有「AND」和「OR」同时出现的话,就要依照你的需要,视情况加上左右刮号来控制条件的设定:

3.3 其它条件运算子

一般的条件和逻辑运算子,已经可以应付大部份的查询条件需求。下列还有一些可以用在特殊用途或是提供替代写法的条件设定:

  • BETWEEN … AND …:范围比较
  • IN (…):成员比较
  • IS:是…
  • IS NOT:不是…
  • LIKE:像…

「BETWEEN … AND …」用来执行一个指定范围条件的设定:

如果要查询人口数量在八万到九万之间的城市资料,可以有下列两种条件的写法,它们执行以后的结果是完全一样的:

使用「BETWEEN … AND …」的条件设定会包含指定的资料,所以下列两个查询条件所得到的结果就不一样了:

「BETWEEN … AND …」使用在日期资料时,也可以完成某一个日期范围的判断:

「IN (…)」使用在一组成员资料的比对条件设定:

下列两个查询叙述,都可以得到国家代码是「TWN、USA、JPN、ITA 和 KOR」的城市资料,可是使用「IN (…)」来设定条件的话,看起来会简洁很多:

3.4 NULL 值的判断

在国家表格中,有一个储存平均寿命的栏位「LifeExpectancy」,不过资料库中的资料并没有很完整,所以有一些国家是没有这个资料的,所以会使用「NULL」值来表示:

如果想要查询没有平均寿命资料的国家,也就是平均寿命的栏位值是「NULL」,你可能会使用下列的叙述:

SELECT Name, LifeExpectancy
FROM country
WHERE LifeExpectancy = NULL

上列的叙述执行以后,并没有传回任何纪录,这表示并没有资料符合你设定的查询条件。

所以「NULL」值的判断,不可以使用判断一般资料的条件设定:

注:``在判断一般资料的时候,跟「=」完全一样;不过它用在判断「NULL」资料的时候,效果跟「IS」一样。

如果换成要查询「有」平均寿命资料的国家,也就是平均寿命的栏位值不是「NULL」:

3.5 字串样式

在使用字串资料的条件判断时,会有一种很常见、也比较特殊的需求,像是「想要查询名称以 w 字元开始的城市」,如果你使用下列的查询叙述:

SELECT Name FROM city WHERE Name = 'w'

这样的查询条件,当然不是「名称以 w 字元开始的城市」,而是名称只有一个「w」字元的城市。所以这类的查询就会使用下列这个特殊的条件设定:

上列语法中,在「LIKE」后面的「样版」字串中,会使用到下列两种「样版字元」:

  • %:0 到多个任何字元
  • _ :一个任何字元

所以要查询「名称以 w 字元开始的城市」的话:

参考上列的作法,就可以延伸出其它的查询条件设定了:

上列的查询条件中,「w%」表示第一个字元是「w」就符合条件;「%w」表示最后一个字元是「w」就符合条件;最后一个「%w%」表示不论在什么位置有「w」字元,都符合条件。

另外一种样版字元「_」表示一个任何字元:

把这些样版中的底线换到后面的话:

你也可以搭配两种样版字元完成条件的设定:

甚至像查询「名称是三十(包含) 个字元以上的城市」:

注:其实完成上列的查询条件的需求是不用这么麻烦的,在后面的章节会讨论比较简单的方式。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文