В вашем запросе есть синтаксическая ошибка:
select text from table as t, "Brian" as v
должно быть:
select text as t, "Brian" as v from table
Как только вы исправите это, вы получите:
Hi my name is
I think
Затем вы можете использовать SUBSTRING_INDEX
для извлечения последнего слова из этих строк:
select case when w.t regexp concat('[[:<:]]', w.v, '[[:>:]]')
then substring_index(substr(w.t, 1, locate(w.v, w.t)-2), ' ', -1)
else null
end as 'left_word',
w.v as word
from (
select text as t, "Brian" as v
from `table`
) as w;
Вывод:
left_word word
is Brian
think Brian
Демонстрация по SQLFiddle
Примечание для MySQL> 8.0.4, вам нужно использовать \\b
в качестве границы слова вместо [[:<:]]
и [[:>:]]
, чтобы ваш запрос стал
select case when w.t regexp concat('\\b', w.v, '\\b')
then substring_index(substr(w.t, 1, locate(w.v, w.t)-2), ' ', -1)
else null
end as 'left_word',
w.v as word
from (
select text as t, "Brian" as v
from `table`
) as w;
Демонстрация на dbfiddle