PostgreSQL | Как отобрать записи содержащие часть строки? — efim360.ru

PostgreSQL | Как отобрать записи содержащие часть строки?

У нас есть таблица. В таблице есть столбец со строковым типом данных.

Таблица с доменными именами из которой нужно отобрать по части строки имени
Таблица с доменными именами из которой нужно отобрать по части строки имени

Мы хотим отобрать несколько записей из этой таблицы, в которых присутствует часть строки.

В нашем случае мы хотим получить идентификаторы записей, где в столбце "dname" встречается ".tumblr" на конце строки.

Как это сделать?

 

Решение

Для решения задачи по отбору ЗАПИСЕЙ на основании части строки ячейки столбца, нам нужно использовать специальный оператор LIKE.

Слева от LIKE должны находиться строка, по которой производится сопоставление.

Справа от LIKE должна находиться строка-шаблон сопоставления.

Пример SQL-запроса в PostgreSQL:

SELECT * FROM a.t_dname WHERE dname LIKE '%.tumblr' LIMIT 5;

Результат работы запроса:

Отобрали 5 записей из таблицы по части строки в PostgreSQL
Отобрали 5 записей из таблицы по части строки в PostgreSQL

Давайте разбираться как это работает.

Слева от оператора LIKE мы указали столбец "dname". То есть когда запрос SELECT будет бежать по всем записям таблицы "t_dname", тогда он будет смотреть на значение ячейки в этом столбце. Так он будет получать строку, по которой нужно произвести сопоставление.

Справа от оператора LIKE мы указали строку-шаблон '%.tumblr'. Самое важное в этой строке - это символ процента %. Этот символ обозначает ЛЮБОЕ КОЛИЧЕСТВО ЛЮБЫХ СИМВОЛОВ. Для нашей задачи это подходит идеально так как мы точно знаем как должна оканчиваться строка и при этом нам всё равно на что она начинается.

 

Дополнение

Кроме символа процента (%) можно использовать символ нижнего подчёркивания (_).  Он обозначает ЛЮБОЙ ОДИН СИМВОЛ.

Оба символа можно использовать в любых сочетаниях и последовательностях при построении шаблона сопоставления.

Если вам нужен более сложный функционал по сопоставлению строк, тогда вам нужно изучить тему "регулярные выражения", которые имеются в любом языке программирования и работают практически одинаково везде.

 

Информационные ссылки

Официальный сайт WEB-оболочки pgAdmin - https://www.pgadmin.org

Официальный сайт СУБД PostgreSQL - https://www.postgresql.org

Оператор LIKE - https://postgrespro.ru/docs/postgresql/14/functions-matching#FUNCTIONS-LIKE