Bonjour,
Sous SQL Server, les chaînes se mettent entre simple quotes, et on ne peut pas combiner l'utilisation d'une fonction de chaîne avec le prédicat LIKE.
Votre requête s'écrit donc :
LIKE '%' + REPLACE(valeurRecherche,'''', '') + '%'
Vous auriez tout intérêt à placer votre code dans une procédure stockée (pour les raisons que j'évoque ici), cela vous éviterait d'avoir à écrire du code compliqué dans votre application ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Cela deviendrait, dans la base de données :
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE PROCEDURE Ps_RecherchePhotoEntreprise_ParNomEntreprise
@_nomEntreprise VARCHAR(32)
AS
BEGIN
SELECT E.Entreprise_Id,
E.Entreprise_Nom,
E.Entreprise_Desc,
P.Photo_Fichier
FROM dbo.Entreprise AS E,
INNER JOIN dbo.Photo AS P
ON E.Entreprise_Id = P.Photo_Entreprise_Id
WHERE E.Entreprise_Nom LIKE '%' + REPLACE(@_nomEntreprise,'''', '') + '%'
END |
Spécifiez vos jointures à l'aide de INNER | LEFT | RIGHT | CROSS JOIN : cela rendra votre code plus lisible puisque vous séparez les prédicats de jointures des filtres de votre requête, et dans certains cas particuliers, ce sera plus performant ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Il vous suffit ensuite d'appeler la procédure stockée dans votre code :
1 2 3 4 5 6 7 8 9 10 11
| using (SqlConnection sqlcnx = new SqlConnection(...))
{
sqlcnx.Open();
// Création de l'appel de procédure stockée
SqlCommand requete = new SqlCommand("Ps_RecherchePhotoEntreprise_ParNomEntreprise", sqlcnx);
requete.CommandType = CommandType.StoredProcedure;
requete.Parameters.Add("@_nomEntreprise", SqlDbType.VarChar, 32).Value = monEntreprise.nom
requete.ExecuteNonQuery()
... |
@++
Partager