Иногда нам нужно выводить строки, с условием, что часть какая-то подстрока входит в строку. Первое что приходит в голову, это использование оператора IN
. Это неправильно!
В этом случае мы используем оператор LIKE
или оператор ~
для регулярных выражений.
Давайте теперь выведем 10 игроков (имя игрока - long_name
, возраст - age
, позиция - team_position
, команда - club
), которые играют в футбольном клубе название которого начинается с “Manchester“:
select
long_name,
age,
team_position,
club
from
fifa_players_2018
where
club like 'Manchester%'
limit 10
В этом случае мы использовали %
в конце строки, этот знак показывает, что после "Manchester" может идти что угодно.
Часто, когда пытаются проверить, что в строке есть подстрока или какой-то паттерн, применяют регулярные выражения с использованием специальных знаков, таких, как %
.
Да, еще стоит упомянуть, что помимо оператора LIKE
мы можем использовать и ~
, в этом случае синтаксис регулярных выражений более сложный, но в то же время более продвинутый.
Давайте для примера напишем такой же запрос, только теперь вместо LIKE
будем использовать ~
select
long_name,
age,
team_position,
club
from
fifa_players_2018
where
-- club like 'Manchester%'
club ~ '^Manchester.*'
limit 10
Как видите, синтаксис немного сложнее :)
Учить регулярные выражения не нужно, для каждого случая можно их гуглить или использовать CHAT GPT (он пишет их качественно).