PostgreSQL Like


PostgreSQL Like

在本节中,我们将了解用于使用模式匹配获取数据的PostgreSQL Like 条件的工作原理使用百分比 (%)、下划线 (_) 通配符的 Like条件示例、Not Like 运算符、ILIKE 的工作operator,以及PostgreSQL Like Operator的扩展

PostgreSQL Like 条件介绍

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

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

为了实现模式匹配,PostgreSQL提供了两种不同的通配符,如下所示:

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

PostgreSQL Like 条件语法

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

expression LIKE pattern [ ESCAPE 'escape_character' ]

在上述语法中,像条件时,如果该值相匹配图案,则表达式将返回

或者

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

expression NOT LIKE pattern[ ESCAPE 'escape_character' ]

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

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

参数 描述
Expression/ value 它用于定义列或字段。
Pattern 模式是一个字符表达式,其中包含模式匹配。
Escape_character Escape 字符是一个可选参数,它允许我们测试通配符的文字实例,例如 %(百分比)或 _(下划线)。

笔记:

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

使用百分比 (%) 通配符的 PostgreSQL Like Condition 示例

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

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

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

所以,我们可以识别员工员工通过在看到表emp_fname列,检查是否有任何价值,与开始

如果Employee表有很多行,我们按照上面的过程,可能需要更多的时间。

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

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

输出

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

PostgreSQL 喜欢

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

注1:

  • 我们可以通过用通配符连接文字值来定义模式。
  • 为了识别匹配项,我们可以使用LIKE 或 NOT LIKE运算符。
  • WHERE 子句可以有一个不同的表达式:emp_fname,其中LIKE 运算符和字符串有一个百分号 (%)
  • Kat%”串被称为一个模式**。

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

让我们看一些使用 LIKE 操作符进行模式匹配的例子:

'abc' LIKE 'abc' True 它将返回真,因为abc模式没有任何通配符;因此LIKE 运算符的作用类似于等号 (=)运算符。
'abc' LIKE 'a_' False 此表达式将返回false,因为模式 (a_)匹配任何以字母 a开头且后跟任何单个字符的字符串
'abc' LIKE 'b' True 模式 (b)匹配任何以任何单个字符开头、后跟字母 b 并以任何单个字符结尾的字符串时,它将返回true
'abc' LIKE 'a%' True 此表达式将返回true,因为它匹配任何以字母a开头并后跟任意数量字符的字符串。

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

在下面的示例中,特定命令将返回emp_fname包含“in”字符串的员工例如 Kather in e、Katr in a、Kar in a 等。

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

输出

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

PostgreSQL 喜欢

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

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

在下面的例子中,我们将emp_fname,emp_lname的,和位置职员\表中,使用下划线通配符内emp_lname的任何字符,然后开始“MITH”

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

输出

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

PostgreSQL 喜欢

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

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

输出

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

PostgreSQL 喜欢

上面的模式_at%匹配任何应该以任何单个字符 (_)开头的字符串,文字字符串应该跟在字符串at 之后,字符串应该以任意数量的字符结束。它将返回emp_fname作为 Kerine 和 Krina。

笔记:

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

PostgreSQL Not Like Condition 示例

我们还可以将 NOT 运算符与PostgreSQL LIKE条件一起使用。以下示例显示了Not Like Operator用于标识emp_fname不以Kat开头的员工用法

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

输出

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

PostgreSQL 喜欢

PostgreSQL LIKE 运算符的扩展

在 PostgreSQL 中,我们也有ILIKE操作符,其工作方式与LIKE 操作符类似。

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

在下面的示例中,我们将使用ILIKE运算符进入员工表:

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

输出

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

PostgreSQL 喜欢

KA%模式的任意字符串匹配以启动嘉,KA,KA,KA,等等。如果我们使用LIKE 运算符代替ILIKE 运算符,该命令将返回一个空结果。

PostgreSQL 还支持其他一些运算符,它们的作用类似于LIKE、ILIKE、NOT LIKE 和 NOT ILIKE运算符,如下表所示:

其他运营商 等于
~~ 喜欢
!~~ 不喜欢
~~* 我喜欢
!~~* 不喜欢

概述

在 PostgreSQL Like Condition 部分,我们学习了以下主题:

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