📅  最后修改于: 2020-11-30 09:00:54             🧑  作者: Mango
在本节中,我们将了解PostgreSQL Like条件的工作原理,该条件用于通过模式匹配来获取数据,使用%(%),下划线(_)通配符,Not Like Operator等类似条件的示例,ILIKE的工作运算符和PostgreSQL Like Operator的扩展。
PostgreSQL Like条件用于从定义的条件满足LIKE条件的表中获取数据。结果包含字符串,该字符串区分大小写并遵循指定的模式。
换句话说,我们还可以说, Like条件用于执行模式匹配以识别确切的结果。
以服务模式匹配的目的, 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). |
注意:
让我们看一个例子来了解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运算符的模式匹配示例:
‘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;
输出量
执行上述命令后,我们将获得以下输出:
在这里,我们还使用上面的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的菜。
注意:
我们还可以将NOT运算符与PostgreSQL LIKE条件一起使用。以下示例显示“不喜欢操作员”用于标识其emp_fname不以Kat开头的员工:
SELECT emp_fname, emp_lname
FROM employee
WHERE emp_fname NOT LIKE 'Kat%';
输出量
执行上述语句后,我们将得到以下结果:
在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条件条件”部分中,我们学习了以下主题: