返回顶部
首页 > 资讯 > 数据库 >如何使用 SQL WHERE 过滤返回的数据
  • 950
分享到

如何使用 SQL WHERE 过滤返回的数据

如何使用SQLWHERE过滤返回的数据 2020-02-20 10:02:24 950人浏览 猪猪侠
摘要

目录一、使用 WHERE 子句二、WHERE 子句操作符2.1 检查单个值2.2 不匹配检查2.3 范围值检查2.4 空值检查三、小结 本文介绍如何使用 sql WHERE 子句指定搜索条件,过滤返回的数据。还介绍

如何使用 SQL WHERE 过滤返回的数据

目录
  • 一、使用 WHERE 子句
  • 二、WHERE 子句操作符
    • 2.1 检查单个值
    • 2.2 不匹配检查
    • 2.3 范围值检查
    • 2.4 空值检查
  • 三、小结

本文介绍如何使用 sql WHERE 子句指定搜索条件,过滤返回的数据。还介绍如何检验相等、不相等、大于、小于、值的范围以及 NULL 值等。

一、使用 WHERE 子句

数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。

SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。WHERE 子句在表名(FROM 子句)之后给出,如下所示:

SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;

这条语句从 products 表中检索两个列,但不返回所有行,只返回 prod_price 值为 3.49 的行,如下所示:

prod_name               prod_price
-------------------     ----------
Fish bean bag toy       3.49
Bird bean bag toy       3.49
Rabbit bean bag toy     3.49

这个示例使用了简单的相等检验:检查这一列的值是否为指定值,据此过滤数据。不过,SQL 不只能测试等于,还能做更多的事情。

提示:有多少个 0?

你在练习这个示例时,会发现显示的结果可能是 3.49、3.490、3.4900 等。出现这样的情况,往往是因为 DBMS 指定了所使用的数据类型及其默认行为。

所以,如果你的输出可能与本文中的有点不同,不必焦虑,毕竟从数学角度讲,3.49 和 3.4900 是一样的。

提示:SQL 过滤与应用过滤

数据也可以在应用层过滤。为此,SQL 的 SELECT 语句为客户端应用检索出超过实际所需的数据,然后客户端代码对返回数据进行循环,提取出需要的行。

通常,这种做法极其不妥。优化数据库后可以更快速有效地对数据进行过滤。

而让客户端应用(或开发语言)处理数据库的工作将会极大地影响应用的性能,并且使所创建的应用完全不具备可伸缩性。

此外,如果在客户端过滤数据,服务器不得不通过网络发送多余的数据,这将导致网络带宽的浪费。

注意:WHERE 子句的位置

在同时使用 ORDER BYWHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将会产生错误(关于 ORDER BY 的使用,请参阅 如何使用 ORDER BY 根据需要排序检索出的数据)。

二、WHERE 子句操作符

我们在做相等检验时看到了第一个 WHERE 子句,它确定一个列是否包含指定的值。SQL 支持表 1 列出的所有条件操作符。

表 1 WHERE 子句操作符

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
!< 不小于
> 大于
>= 大于等于
!> 不大于
BETWEEN 在指定的两个值之间
IS NULL NULL

注意:操作符兼容

表 1 中列出的某些操作符是冗余的(如 <>!= 相同,!< 相当于 >=)。并非所有 DBMS 都支持这些操作符。想确定你的 DBMS 支持哪些操作符,请参阅相应的文档。

2.1 检查单个值

我们已经看到了检验相等的例子,现在来看看几个使用其他操作符的例子。

第一个例子是列出所有价格小于 10 元的产品。

SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 10;

输出:

prod_name               prod_price
-------------------     ----------
Fish bean bag toy       3.49
Bird bean bag toy       3.49
Rabbit bean bag toy     3.49
8 inch teddy bear       5.99
12 inch teddy bear      8.99
Raggedy Ann             4.99
King doll               9.49
Queen doll              9.49

下一条语句检索所有价格小于等于 10 元的产品(因为没有价格恰好是 10 元的产品,所以结果与前一个例子相同):

SELECT prod_name, prod_price
FROM Products
WHERE prod_price <= 10;

2.2 不匹配检查

这个例子列出所有不是供应商 DLL01 制造的产品:

SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> "DLL01";

输出:

vend_id        prod_name
----------     ------------------
BRS01          8 inch teddy bear
BRS01          12 inch teddy bear
BRS01          18 inch teddy bear
FNG01          King doll
FNG01          Queen doll

提示:何时使用引号

如果仔细观察上述 WHERE 子句中的条件,会看到有的值括在单引号内,而有的值未括起来。单引号用来限定字符串。如果将值与字符串类型的列进行比较,就需要限定引号。用来与数值列进行比较的值不用引号。

下面是相同的例子,其中使用 != 而不是 <> 操作符:

SELECT vend_id, prod_name
FROM Products
WHERE vend_id != "DLL01";

注意:是 != 还是 <>

!=<> 通常可以互换。但是,并非所有 DBMS 都支持这两种不等于操作符。如果有疑问,请参阅相应的 DBMS 文档。

2.3 范围值检查

要检查某个范围的值,可以使用 BETWEEN 操作符。其语法与其他 WHERE 子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值。

例如,BETWEEN 操作符可用来检索价格在 5 元和 10 元之间的所有产品,或在指定的开始日期和结束日期之间的所有日期。

下面的例子说明如何使用 BETWEEN 操作符,它检索价格在 5 元和 10 元之间的所有产品。

SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;

输出:

prod_name               prod_price
-------------------     ----------
8 inch teddy bear       5.99
12 inch teddy bear      8.99
King doll               9.49
Queen doll              9.49

从这个例子可以看到,在使用 BETWEEN 时,必须指定两个值——所需范围的低端值和高端值。这两个值必须用 AND 关键字分隔。BETWEEN 匹配范围中所有的值,包括指定的开始值和结束值。

2.4 空值检查

在创建表时,表设计人员可以指定其中的列能否不包含值。在一个列不包含值时,称其包含空值 NULL

NULL

无值(no value),它与字段包含 0、空字符串或仅仅包含空格不同。

确定值是否为 NULL,不能简单地检查是否等于 NULLSELECT 语句有一个特殊的 WHERE 子句,可用来检查具有 NULL 值的列。这个 WHERE 子句就是 IS NULL 子句。其语法如下:

SELECT prod_name
FROM Products
WHERE prod_price IS NULL;

这条语句返回所有没有价格(空 prod_price 字段,不是价格为 0)的产品,由于表中没有这样的行,所以没有返回数据。但是,Customers 表确实包含具有 NULL 值的列:如果没有电子邮件地址,则 cust_email 列将包含 NULL 值:

SELECT cust_name
FROM Customers
WHERE cust_email IS NULL;

输出:

cust_name
----------
Kids Place
The Toy Store

提示:DBMS 特有的操作符

许多 DBMS 扩展了标准的操作符集,提供了更高级的过滤选择。更多信息请参阅相应的 DBMS 文档。

注意:NULL 和非匹配

通过过滤选择不包含指定值的所有行时,你可能希望返回含 NULL 值的行。但是这做不到。因为 NULL 比较特殊,所以在进行匹配过滤或非匹配过滤时,不会返回这些结果。

三、小结

本文介绍了如何用 SELECT 语句的 WHERE 子句过滤返回的数据。还介绍了如何检验相等、不相等、大于、小于、值的范围以及 NULL 值等。

原文链接:https://www.developerastrid.com/sql/sql-where

(完)

原文地址:Https://www.cnblogs.com/vin-c/arcHive/2022/04/26/16195006.html

您可能感兴趣的文档:

--结束END--

本文标题: 如何使用 SQL WHERE 过滤返回的数据

本文链接: https://lsjlt.com/news/9273.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用 SQL WHERE 过滤返回的数据
    目录一、使用 WHERE 子句二、WHERE 子句操作符2.1 检查单个值2.2 不匹配检查2.3 范围值检查2.4 空值检查三、小结 本文介绍如何使用 SQL WHERE 子句指定搜索条件,过滤返回的数据。还介绍...
    99+
    2020-02-20
    如何使用 SQL WHERE 过滤返回的数据
  • 如何使用 SQL AND、OR、IN 和 NOT 过滤返回的数据
    目录一、组合 WHERE 子句1.1 AND 操作符1.2 OR 操作符1.3 求值顺序二、IN 操作符三、NOT 操作符四、小结 本文介绍如何用 AND 和 OR 操作符组合成 WHERE 子句以建立功能更强、更高级的搜...
    99+
    2019-08-13
    如何使用 SQL AND OR IN NOT 过滤返回的数据
  • sql如何获取存储过程返回数据
    这篇文章给大家分享的是有关sql如何获取存储过程返回数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。就是在执行存储后,获取存储过程执行的数据并作为其他应的二次使用,其实在代码中...
    99+
    2024-04-02
  • Ajax如何实现返回字符串的过滤
    这篇文章主要介绍“Ajax如何实现返回字符串的过滤”,在日常操作中,相信很多人在Ajax如何实现返回字符串的过滤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax如何实现...
    99+
    2024-04-02
  • MySQL REPLACE() 函数如何与 WHERE 子句一起使用?
    我们知道,WHERE 子句用于在 MySQL 查询中添加条件,MySQL 根据这些条件返回结果集。类似地,当我们将 REPLACE() 函数与 WHERE 子句一起使用时,结果集将取决于提供的条件。以下是使用“学生”...
    99+
    2023-10-22
  • java如何通过https返回数据
    在java中利用https返回json数据,具体方法如下:public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outpu...
    99+
    2024-04-02
  • 使用php如何返回json数据
    使用php如何返回json数据?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampSer...
    99+
    2023-06-14
  • CONCAT_WS() 函数如何与 MySQL WHERE 子句一起使用?
    当我们将 CONCAT_WS() 函数与 WHERE 子句一起使用时,输出将基于 WHERE 子句中提供的条件。从‘Student’表的例子可以理解如下例子mysql> Select CONCAT_W...
    99+
    2023-10-22
  • SQL如何使用正则表达式对数据进行过滤
    目录1、基本字符匹配2、进行OR匹配3、匹配几个字符之一4、匹配范围5、匹配特殊字符6、匹配字符类7、匹配多个实例8、定位符9、like语句与正则总结1、基本字符匹配 数据库使用正则进行过滤,写法与like语句非常相似,...
    99+
    2024-04-02
  • 我们如何将 MySQL INSTR() 函数与 WHERE 子句一起使用?
    当我们将 INSTR() 函数与 MySQL WHERE 子句一起使用时,我们需要提供表的列名作为第一个参数,提供子字符串作为第二个参数以及比较运算符。以下是使用“学生”表进行演示的示例 -示例假设“学生”表中有以下值 -mysql...
    99+
    2023-10-22
  • MySQL LTRIM() 和 RTRIM() 函数如何与 WHERE 子句一起使用?
    MySQL LTRIM() 和 RTRIM() 函数可用于消除表中列值的前导和尾随空格。即使我们在 WHERE 子句中应用条件,这些函数也能正常工作。示例mysql> Select LTRIM...
    99+
    2023-10-22
  • ajax返回的数据如何取
    要从ajax返回的数据中获取特定的值,需要通过解析返回的数据进行处理。通常返回的数据是一个字符串,可以使用JSON.parse()函...
    99+
    2023-09-15
    ajax
  • python如何使用Filter()过滤函数
    小编给大家分享一下python如何使用Filter()过滤函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! Filter()过滤函数filter()函...
    99+
    2023-06-27
  • PHP如何用回调函数过滤数组中的单元
    这篇文章将为大家详细讲解有关PHP如何用回调函数过滤数组中的单元,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 使用 PHP 回调函数过滤数组单元 简介 PHP 提供了强大的数组处理功能,其中包括使用回...
    99+
    2024-04-02
  • 如何使用SQL语句在MySQL中进行数据过滤和条件查询?
    如何使用SQL语句在MySQL中进行数据过滤和条件查询?MySQL作为一种常用的数据库管理系统,广泛用于存储和管理大量数据。在实际应用中,我们常常需要根据特定的条件查询数据,以满足各种需求。本文将介绍如何使用SQL语句在MySQL中进行数据...
    99+
    2023-12-18
    MySQL 数据过滤 SQL语句
  • 我们如何在 MySQL 返回的结果集的组级别应用过滤条件?
    众所周知,SELECT 语句中的 GROUP BY 子句可以将 MySQL 返回的结果集进行分组。现在,如果我们只想返回某些特定组,则需要在组级别应用过滤条件。可以通过在 GROUP BY 子句中使用 HAVING 子句来完...
    99+
    2023-10-22
  • 如何使用filter方法过滤数组
    要使用`filter`方法过滤数组,可以按照以下步骤进行操作:1. 创建一个数组;2. 使用`filter`方法对数组进行过滤;3....
    99+
    2023-10-09
    filter
  • python如何使用filter函数过滤值
    这篇文章主要介绍了python如何使用filter函数过滤值,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用filter函数过滤值filter函数用于过滤可迭代对象中的某些...
    99+
    2023-06-27
  • perl如何过滤文件中的数据
    在Perl中,可以使用正则表达式或者内置的字符串函数来过滤文件中的数据。以下是两种常见的方法:1. 使用正则表达式过滤数据:```p...
    99+
    2023-10-07
    perl
  • 数据库where语句如何使用
    在数据库中,WHERE语句用于筛选出符合特定条件的数据记录。它通常与SELECT语句一起使用,以在查询结果中返回符合...
    99+
    2023-10-07
    数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作