названия которых начинаются на букву «с» и содержат только одно слово.
Результат должен быть отсортирован по возрастанию id товара.
Поля в результирующей таблице: product_id, name
select product_id, SPLIT_PART(name, ' ', 1) as name
from products
where name LIKE 'с%'
order by product_id
что не так?
1. Поля, которые «порождены» в SELECT (в вашем случае name), не доступны в WHERE (ввиду определенной очередности этапов подобного запроса). Таким образом, в действительности, вы там обращаетесь к name как оригинальному столбцу собственно таблицы; 2. У вас нет проверки на то, что «наименование» содержит только одно слово; 3. SPLIT_PART в результате SELECT вас не просили делать (впрочем, исключительно случайно, он покажет тоже самое при заданой выборке что и просто оригинальный name, — если она будет корректно выбрана, конечно).
SELECT product_id, name FROM products WHERE name LIKE 'с%' and name NOT LIKE '% %' ORDER BY product_id ASC; сработало. Но первый вариант тоже вроде резал и выводил то, что начиналось с "c"
Обсуждают сегодня