Функция position() в PostgreSQL используется для поиска местоположения подстроки в строке. Она возвращает позицию первого вхождения подстроки. Если подстрока не найдена, она возвращает 0.
Синтаксис – функция position() в PostgreSQL
position(substring text IN string text)
substring:
подстрока для поиска
string:
Строка, в которой следует искать
Примеры – функция position() в PostgreSQL
- Найти позицию подстроки:
SELECT position('Expert' IN 'PostgreSQL Expert');
Объяснение:Подстрока «Expert» начинается с 12-й позиции в строке «PostgreSQL Expert».
Результат:

2. Подстрока не найдена
SELECT position('wizard' IN 'PostgreSQL Expert');
Объяснение:Подстрока ‘wizard’ не найдена в строке ‘PostgreSQL Expert’. Если подстрока не найдена, она вернет Zero, поэтому вывод будет
Результат:

3. Чувствительность к регистру
SELECT position('expert' IN 'PostgreSQL Expert');
Объяснение:Функция position() чувствительна к регистру, поэтому ‘expert’ не найден в строке ‘PostgreSQL Expert’. Если подстрока не найдена, она вернет Zero, поэтому вывод будет
Результат:

Использование position() для столбца в PostgreSQL:
Мы можем использовать функцию position() для столбца таблицы, чтобы найти позицию подстроки в значении каждой строки.
Мы будем использовать таблицу “Texts”.

SELECT *, position('PostgreSQL' IN content) AS position_of_PostgreSQL FROM Texts;
Объяснение
- Запрос возвращает идентификатор, содержимое и позицию подстроки «PostgreSQL» в каждом содержимом.
- Если подстрока «PostgreSQL» не найдена, возвращается 0.
Результат:

Использование функции position() для фильтрации строк на основе наличия строки/подстроки:
Функцию position() можно использовать для фильтрации строк на основе наличия или отсутствия строки или подстроки.
SELECT * FROM Texts WHERE position('PostgreSQL' IN content) > 0;
Этот запрос выбирает строки, в которых в столбце содержимого встречается подстрока «PostgreSQL».
Результат:
