【MySQL必知必会】:数据过滤

121 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情

一、前言

大家好,今天文章的内容是:

  • 【数据过滤】

二、内容

2.1、逻辑操作符

我们可以使用逻辑操作符来联结或改变WHERE子句中的子句。

常用逻辑操作符如下:

  • AND:组合多个过滤条件(同时匹配)
  • OR:匹配任一过滤条件(匹配任一条件即可)

注意事项:

  • WHERE可包含任意数目的ANDOR操作符。
  • 适当使用圆括号()来明确分组逻辑操作符,这是因为操作符AND的优先级比OR高,这就产生了计算次序,有时我们希望的过滤条件可能不起作用,因此推荐使用圆括号来消除歧义。

2.2、IN 操作符

WHERE子句中,可以使用IN操作符,用于指定条件范围,与圆括号搭配使用,范围中的每个条件都可以进行匹配。

实际上,IN操作符的功能和OR操作符类似,比如下面两条语句的效果是相同的:

  • SELECT p_id IN (10, 11);
  • SELECT p_id = 10 OR p_id = 11;

2.3、NOT 操作符

WHERE子句中,NOT操作符用于否定它之后所跟的任何条件。通过NOT操作符可以对一些过滤条件进行取反,轻松达到想要的数据过滤效果。

2.4、LIKE 操作符

前面的过滤条件,都是根据已知值进行匹配的,过滤的值都是已知的。而利用通配符,我们可以创建不一样的检索模式。

WHERE子句中,我们可以利用通配符来匹配值的一部分。比如匹配名称含有ad的所有产品。这样方法称为搜索模式,即search pattern,指的是由字面值、通配符或者二者组合构成的搜索条件。

为了使用通配符,必须使用 LIKE 操作符。

LIKE指示MySQL后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。

通配符可以在搜索模式中任意位置使用,并且我们可以组合使用多个通配符。

(1)百分号通配符(%)

在搜索串中,百分号(%)表示任何字符出现任意次数,即匹配0个、1个或多个字符。

比如下面这条语句用于检索所有以Web起头的产品:

SELECT prod_id, prod_name
FROM products
WHERE pro_name LIKE 'Web%';

再举一个例子,下面这条语句将检索所有包含文本Web的值,不论它之前或之后出现什么字符:

SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '%Web%';

另外需要注意,百分号(%)通配符无法匹配NULL值。

(2)下划线通配符(_)

下划线(_)通配符用于匹配单个字符。


三、后话

好了,今天的文章内容就到这里,感谢观看。