Este é um bom uso de uma tabela temporária.
CREATE TEMPORARY TABLE patterns (
pattern VARCHAR(20)
);
INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');
SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);
Nos padrões de exemplo, não há como
col
pode corresponder a mais de um padrão, então você pode ter certeza de que verá cada linha de tbl
no máximo uma vez no resultado. Mas se seus padrões forem tais que col
pode corresponder a mais de um, você deve usar o DISTINCT
modificador de consulta. SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);