J'ai une requête SQL qui joint plusieurs tables et je veux filtrer les enregistrements en utilisant la même condition LIKE pour plusieurs colonnes du jeu de résultats. Par exemple, j'ai des colonnes t1.Name, t1.FullName, t1.Comment, t2.Name, t3.Description, etc. dans ma requête (t1, t2 et t3 sont les noms des tables jointes) et je veux vérifier si t1.Name ou t1.FullName ou t1.Comment ou t2.Name ou t3.Description est LIKE '%sometext%'. Je suis simplement intéressé par le SQL qui sera le plus rapide ?
WHERE t1.FullName LIKE '%sometext%' OR t1.Comment LIKE '%sometext%' OR
t2.Name LIKE '%sometext%' OR t3.Description LIKE '%sometext%'
ou
WHERE ISNULL(t1.Name,'') + '|' + ISNULL(t1.FullName,'') + '|' + ISNULL(t1.Comment,'') + '|' + ISNULL(t2.Name,'') + '|' + ISNULL(t3.Description,'') LIKE '%sometext%'
Ou peut-être existe-t-il un moyen encore plus rapide ? J'utilise MS SQL Server 2008 R2.
UPD : J'ai modifié ma deuxième requête pour gérer les situations où certains champs sont NULL et où la concaténation peut contenir un motif mais pas les champs séparément.