📜  PostgreSQL Like条件

📅  最后修改于: 2020-11-30 09:00:54             🧑  作者: Mango

PostgreSQL Like条件

在本节中,我们将了解PostgreSQL Like条件的工作原理,该条件用于通过模式匹配来获取数据,使用%(%),下划线(_)通配符,Not Like Operator等类似条件示例,ILIKE的工作运算符PostgreSQL Like Operator的扩展

PostgreSQL条件介绍

PostgreSQL Like条件用于从定义的条件满足LIKE条件的表中获取数据。结果包含字符串,该字符串区分大小写并遵循指定的模式。

换句话说,我们还可以说, Like条件用于执行模式匹配以识别确切的结果。

以服务模式匹配的目的, PostgreSQL的提供了两种不同的字符,其如下所示:

  • 百分比(%)通配符:匹配零个或多个字符的任何序列。
  • 下划线(_)通配符:匹配任何单个字符。

PostgreSQL条件句法

在PostgreSQL中,Like条件可以与SELECT,INSERT,UPDATE和DELETE命令以及WHERE子句一起使用。

expression LIKE pattern [ ESCAPE 'escape_character' ]  

在上面的语法中,使用Like条件,如果值与模式匹配,则表达式将返回true

要么

我们可以使用NOT运算符语法来反对LIKE运算符,如下所示:

expression NOT LIKE pattern[ ESCAPE 'escape_character' ]  

在上面的语法中,当值不匹配时使用Not Like条件,然后模式返回true

在以上语法中,我们使用了以下参数:

Parameters Description
Expression/ value It is used to define a column or field.
Pattern The pattern is a character expression, which contains pattern matching.
Escape_character The Escape character is an optional parameter, which allows us to test for literal instances of a wildcard character such as % (percent) or _ (underscore).

注意:

  • 如果我们不想指定escape_character,则PostgreSQL假定“ \”是escape_character。
  • 如果模式没有任何通配符,则Like运算符的行为类似于等于“ =”的运算字符。

使用百分比(%)通配符的PostgreSQL类似条件示例

让我们看一个例子来了解PostgreSQL Like条件是如何工作的:

假设我们想识别一名雇员,但我们没有准确记住他/她的名字。但是我们知道他/她的名字以kat开头。

现在出现了问题,我们如何从数据库中识别特定的员工?

因此,我们可以通过查看emp_fname列以检查是否存在以kat开头的任何值来在Employee表中标识出该雇员

如果Employee表中有很多行,并且我们遵循上述过程,则可能需要更多时间。

因此,在下面的示例中,我们使用PostgreSQL Like条件将员工的名字与字符串匹配,如以下命令所示:

SELECT emp_fname, emp_lname
FROM employee
WHERE emp_fname LIKE 'Kat%';

输出量

执行以上命令后,我们将得到以下结果:

上面的语句返回的行,其emp_fname列中的值以Kat开头,并且可以跟随任何字符序列,称为模式匹配技术

注意1:

  • 我们可以用字符加入字面量值定义模式。
  • 要确定匹配项,我们可以使用LIKE或NOT LIKE运算符。
  • WHERE子句可以具有不同的表达式: emp_fname ,其中LIKE运算符和字符串具有百分号(%)
  • 并且‘Kat%’字符串被称为pattern

PostgreSQL Like运算符的示例:模式匹配

让我们来看一些使用LIKE运算符的模式匹配示例:

‘abc’ LIKE ‘abc’ True It will return true as the abc pattern does not have any wildcard character; hence the LIKE operator performs like the equal (=) operator.
‘abc’ LIKE ‘a_’ False This expression will return false as the pattern (a_) matches any string that starts with the letter a, and is followed by any single character.
‘abc’ LIKE ‘_b_’ True It will return true as the pattern ( _b_) matches any string, which starts with any single character, and followed by the letter b and finished with any single character.
‘abc’ LIKE ‘a%’ True This expression will return true because it matches any string, which starts with the letter a and followed by any number of characters.

注意:在PostgreSQL中,我们可以在模式的开头和结尾使用通配符。

在下面的例子中,特定的命令将返回这些雇员“在”字符串,其包含emp_fname诸如Kather电子,Katr,嘉

SELECT emp_fname, emp_lname
FROM employee
WHERE emp_fname LIKE '%in%'
ORDER BY emp_fname;

输出量

执行上述命令后,我们将获得以下输出:

使用Like运算符的下划线(_)通配符示例

在这里,我们还使用上面的Employee表在Like Operator的帮助下显示下划线(_)通配符的工作。

在下面的示例中,我们将从employee表中获取emp_fname,emp_lname和位置,并在emp_lname中使用下划线通配符以任何字符开头,后跟“ mith”

SELECT emp_fname, emp_lname, location
FROM employee
WHERE emp_lname LIKE '_mith';

输出量

执行以上命令后,我们将得到以下结果:

现在,如果我们想将下划线(_)和百分比(%)通配符连接在一起以创建模式,如下面的命令所示:

SELECT emp_fname, emp_lname
FROM employee
WHERE emp_fname LIKE '_at%'
ORDER BY emp_fname;

输出量

执行以上命令后,我们将得到以下结果:

上面的_at%模式匹配应以任何单个字符(_)开头的任何字符串,字面量字符串应位于的字符串之后,该字符串应以任意数量的字符结尾。它将erine和K返回emp_fname为K菜。

注意:

  • 要匹配字符串任意位置的字符或序列模式必须以百分号(%)开头和结尾,因为Like模式匹配始终包含整个字符串
  • 搜索条件可以具有数字或字面量字符:其中百分号(%)零个或多个字符的任何序列匹配。
  • 模式中的下划线符号(_)用于匹配任何单个字符

PostgreSQL不符合条件的示例

我们还可以将NOT运算符与PostgreSQL LIKE条件一起使用。以下示例显示“不喜欢操作员”用于标识其emp_fname不以Kat开头的员工

SELECT emp_fname, emp_lname
FROM employee
WHERE emp_fname NOT LIKE 'Kat%';

输出量

执行上述语句后,我们将得到以下结果:

PostgreSQL LIKE运算符的扩展

在PostgreSQL中,我们还有ILIKE运算符,其作用类似于LIKE运算符

换句话说,我们可以说ILIKE运算符不区分大小写地等于该值。

在以下示例中,我们将在员工表中使用ILIKE运算符:

SELECT emp_fname, emp_lname
FROM employee
WHERE emp_fname ILIKE 'ka%';

输出量

执行以上命令后,我们将看到以下结果:

ka%模式匹配以Ka,ka,ka,ka等开头的任何字符串。如果我们使用LIKE运算符代替ILIKE运算符,则该命令将返回空结果。

PostgreSQL还支持其他一些运算符,其性能类似于LIKE,ILIKE,NOT LIKE和NOT ILIKE运算符,如下表所示:

Other Operators Equal to
~~ Like
!~~ Not Like
~~* ILIKE
!~~* Not ILIKE

总览

在“ PostgreSQL条件条件”部分中,我们学习了以下主题:

  • 我们将PostgreSQL Like条件Percent(%)和Underscore(_)通配符一起使用
  • 我们使用Not Like运算符从特定表中获取记录。
  • 我们将百分比(%)和下划线(_)通配符一起用于匹配模式。
  • 我们学习了ILIKE运算符,该运算符用于通过模式匹配来获取数据。
  • 我们了解了PostgreSQL Like Operator的扩展