The
LIKE
expression returns
true if the string matches the
supplied pattern. (As expected,
the NOT LIKE
expression returns
false if LIKE
returns true, and
vice versa. An equivalent expression is NOT
(string LIKE pattern).)If pattern does not contain percent signs or underscores, then the pattern only represents the string itself; in that case
LIKE
acts like the equals operator. An
underscore (_) in pattern stands for (matches) any single
character; a percent sign (%) matches
any sequence of zero or more characters.Some examples:
'abc' LIKE 'abc' true 'abc' LIKE 'a%' true 'abc' LIKE '_b_' true 'abc' LIKE 'c' false
LIKE
pattern matching always
covers the entire string. Therefore, to match a sequence
anywhere within a string, the pattern must start and end with a
percent sign.To match a literal underscore or percent sign without matching other characters, the respective character in pattern must be preceded by the escape character. The default escape character is the backslash but a different one can be selected by using the ESCAPE clause. To match the escape character itself, write two escape characters.
Note that the backslash already has a special meaning in string literals, so to write a pattern constant that contains a backslash you must write two backslashes in an SQL statement (assuming escape string syntax is used, see Section 4.1.2.1). Thus, writing a pattern that actually matches a literal backslash means writing four backslashes in the statement. You can avoid this by selecting a different escape character with ESCAPE; then a backslash is not special to
LIKE
anymore. (But backslash is still special to the string literal
parser, so you still need two of them to match a
backslash.)It's also possible to select no escape character by writing ESCAPE ''. This effectively disables the escape mechanism, which makes it impossible to turn off the special meaning of underscore and percent signs in the pattern.
The key word ILIKE can be used instead of LIKE to make the match case-insensitive according to the active locale. This is not in the SQL standard but is a PostgreSQL extension.
The operator ~~ is equivalent to
LIKE
, and ~~* corresponds to ILIKE
. There are also !~~ and !~~* operators
that represent NOT LIKE
and
NOT ILIKE
, respectively. All of
these operators are PostgreSQL-specific.
No comments:
Post a Comment