Как возвращать только часть строки PostgreSQL?
Есть таблица
|id|name |
| 1|Denis Denisov |
| 2|Andew Andrienko |
| 3|Nikolai Andrienko|
| 4|Andrew Nikolaev |
Не могу понять как вернуть только имена людей, у которых фамилия Andrienko.
Сейчас только есть вариант с выводом всей ячейки, но как возвращать только имена?
SELECT *
FROM table
WHERE name LIKE '% Andrienko';
Ответы (4 шт):
Автор решения: Pekor
→ Ссылка
Либо сделать 2 столбца - один для имени, другой для фамилии; тогда запрос будет что-то типо SELECT name FROM table WHERE surname = 'Andrienko';
Либо - https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15 (разбиваешь значение столбца по пробелу и вытаскиваешь первый элемент - это и будет имя)
Автор решения: Konst
→ Ссылка
можно использовать CHARINDEX() для поиска пробела:
select id, left([name],CHARINDEX(' ', [name], 0) - 1) as firstname from table WHERE [name] LIKE '% Andrienko'
Автор решения: Проста Miha
→ Ссылка
Вот что-то такое я могу предложить
SELECT SUBSTR(name, 1, INSTR(name, ' ') - 1) AS name
FROM table
WHERE name LIKE '% Andrienko';
Автор решения: whatgenius
→ Ссылка
SELECT substring(name, 1, position(' ' in name) - 1) FROM tickets WHERE name LIKE '% Andrienko';