SELECT `p`, * FROM catalog_ads
WHERE status = 1 AND category_id = 1 AND moderation = 0 AND ad_diamond = 0 AND ad_vip = 0
UNION
SELECT `v_p`, * FROM catalog_ads
WHERE status = 1 AND category_id = 1 AND moderation = 0 AND ad_vip = 1
UNION
SELECT `d_p`, * FROM catalog_ads
WHERE status = 1 AND category_id = 1 AND moderation = 0 AND ad_diamond = 1
ORDER BY 1 DESC
он ищет отдельными словами
CONCAT_WS( ' ', ' ', name1, name2, name3, ' ' ) LIKE '% Иван %'
AND
CONCAT_WS( ' ', ' ', name1, name2, name3, ' ' ) LIKE '% Иванович %'
AND
CONCAT_WS( ' ', ' ', name1, name2, name3, ' ' ) LIKE '% Иванов %'