c# procédure - L'utilisation de SqlParameter dans la clause SQL LIKE ne fonctionne pas




2 Answers

Ce que vous voulez est:

tblCustomerInfo.Info LIKE '%' + @SEARCH + '%'

(ou éditez la valeur du paramètre pour inclure le% en premier lieu).

Sinon, vous êtes (premier exemple) en train de chercher le littéral "@SEARCH" (pas la valeur arg), ou vous intégrez des citations supplémentaires dans la requête (second exemple).

D'une certaine manière, il peut être plus facile d'utiliser le TSQL avec la commande LIKE @SEARCH et de la gérer à l'appelant:

command.Parameters.AddWithValue("@SEARCH","%" + searchString + "%");

Les deux approches devraient fonctionner.

stockée déconnecté

J'ai le code suivant:

const string Sql = 
    @"select distinct [name] 
      from tblCustomers 
      left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId  
      where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');";

using (var command = new SqlCommand(Sql, Connection))
{       
    command.Parameters.AddWithValue("@SEARCH", searchString);
    ...
}

Cela ne fonctionne pas, j'ai aussi essayé ceci:

const string Sql = 
    @"select distinct [name] 
     from tblCustomers 
     left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId  
     where (tblCustomer.Name LIKE @SEARCH OR tblCustomerInfo.Info LIKE @SEARCH );";

using (var command = new SqlCommand(Sql, Connection))
{       
    command.Parameters.AddWithValue("@SEARCH", "'%" + searchString + "%'");
    ...
}

mais cela ne fonctionne pas aussi bien. Qu'est-ce qui ne va pas? Aucune suggestion?




Vous pouvez faire LIKE @SEARCH et dans votre code C #, faites

searchString = "%" + searchString + "%"



Related