Este es un buen uso de una tabla temporal.
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);
En los patrones de ejemplo, no hay manera de que col
podría coincidir con más de un patrón, por lo que puede estar seguro de que verá cada fila de tbl
como máximo una vez en el resultado. Pero si tus patrones son tales que col
podría coincidir con más de uno, debe usar DISTINCT
modificador de consulta.
SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);