Рядкистандарт SQL

POSITION

Знаходить, з якого символу в рядку починається підрядок.

Синтаксис

POSITION(<підрядок> IN <текст>)
STRPOS(<текст>, <підрядок>)

Повертає номер символу, з якого вперше починається підрядок, рахуючи з 1. Якщо підрядка нема — 0. Часто — разом із SUBSTRING чи LEFT, щоб вирізати шматок до або після певного символу.

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Де стоїть @
SELECT POSITION('@' IN 'emma@example.com') AS at_sign,
POSITION('#' IN 'emma@example.com') AS not_found;
at_signnot_found
50
Перший пробіл у телефоні
SELECT name, phone,
POSITION(' ' IN phone) AS first_space
FROM employees;
namephonefirst_space
Emma+44 7700 9001234
LiamNULLNULL
Olivia+44 7700 9004564
Noah+44 7700 9007894
SophiaNULLNULL
Усе до @
SELECT LEFT('emma@example.com', POSITION('@' IN 'emma@example.com') - 1) AS login;
login
emma

@ стоїть п'ятим, тож беремо 4 символи зліва. Для такого завдання є й коротший SPLIT_PART.

Зверни увагу

Не знайшло — 0, а не NULL. Перевіряй POSITION(…) > 0.

Регістр важить: POSITION('E' IN 'emma') дає 0. Без огляду на регістр — зведи обидва боки через LOWER.

У STRPOS порядок аргументів інший: спершу текст, потім що шукати — STRPOS('emma@example.com', '@').

Схожі функції