Вы ищете буквенную строку a.company
, а не столбец. Попробуйте это:
SELECT a.id, a.company, a.name, b.title, b.description, b.t_id
FROM a, b
WHERE
(
b.title REGEXP concat('[[:<:]]', a.company, '[[:>:]]')
OR b.description REGEXP concat('[[:<:]]', a.company, '[[:>:]]')
OR b.title REGEXP concat('[[:<:]]', a.name, '[[:>:]]')
OR b.description REGEXP concat('[[:<:]]', a.name, '[[:>:]]')
)
AND a.company != '' AND a.name != ''
Это обеспечивает regexp
значением столбца, а не строки 'a.company'
. Поскольку я предполагаю, что вы хотите сравнить значение столбца (а не имя столбца), вам необходимо объединить ваши regexp
вместе.
Вы можете проверить это с помощью этого запроса:
select
'My col: a.company' as Test1,
'My col: ' + a.company as Test2
from
a
Здесь Test1
всегда будет значением My col: a.company
, а Test2 будет My col: <company col value here>
.