Я хочу сделать матч REGEXP с MySQL от переменной, например, так:Рассматривать целое «слово» буквально с регулярным выражением?
SELECT *
FROM table
WHERE table.CONTENT
REGEXP CONCAT('([[:space:]]|[[:punct:]])', table.NAME, '([[:space:]]|[[:punct:]])')
Это прекрасно работает, но это возможно для table.NAME иметь регулярное выражение специальных символов в нем (например, «|»), и в этом случае он все испортится. Существует ли регулярный оператор для обработки целой последовательности символов в буквальном смысле и игнорирования в нем операторов?
Например, если таблица.NAME была «left | right» для одной строки, я бы хотел, чтобы она соответствовала только таблице table.CONTENT буквально имеет в ней строку «left | right». Но если я не могу так или иначе заставить это, MySQL будет видеть это как оператор и искать либо «левый», либо «правый».
Знаете ли вы, что REGEXP медленнее, чем 'LIKE'? Если вы хотите повысить производительность, я бы рекомендовал использовать схему именования, которая не включает специальные символы. –