Я ничего не понимаю в этой команде MySQL. У меня есть набор таких строк в переменной с именем pagetitle в таблице, называемой сканером:
Marketing analytics via Christopher Penn
И я хочу отрезать все после, включая переход, чтобы получить:
Marketing analytics
Я сделал это:
UPDATE scanner SET pagetitle = SELECT TRIM(TRAILING ' via ' FROM pagetitle) FROM scanner
Который, согласно руководству, должен делать то, что я ищу, но он все еще дает исходную строку.
Что я делаю неправильно?






Параметр TRAILING с TRIM относится к завершающим символам, а не ко всем словам, начинающимся с определенного слова. Попробуйте использовать INSTR здесь:
UPDATE scanner
SET pagetitle = LEFT(pagetitle, INSTR(pagetitle, 'via') - 2);
WHERE pagetitle REGEXP '[[:<:]]via[[:>:]]';
Если вы используете MySQL 8+ или более позднюю версию, мы можем попробовать использовать REGEXP_REPLACE:
UPDATE scanner
SET pagetitle = REGEXP_REPLACE(pagetitle, '\\s+via.*', '');