c# - una - El uso de SqlParameter en la cláusula SQL LIKE no funciona
operadores sql y ejemplos (3)
En lugar de usar:
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%'');";
Usa este código:
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 + ''%'');";
Tengo el siguiente código:
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);
...
}
Esto no funciona, intenté esto también:
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 + "%''");
...
}
pero esto no funciona tan bien. ¿Qué está pasando mal? ¿Alguna sugerencia?
Lo que quieres es:
tblCustomerInfo.Info LIKE ''%'' + @SEARCH + ''%''
(o edite el valor del parámetro para incluir el% en primer lugar).
De lo contrario, estás (primera muestra) buscando el literal "@SEARCH" (no el valor arg), o estás incorporando algunas comillas adicionales en la consulta (segunda muestra).
De alguna manera, podría ser más fácil hacer que el TSQL simplemente use LIKE @SEARCH
y manejarlo en la persona que llama:
command.Parameters.AddWithValue("@SEARCH","%" + searchString + "%");
Cualquiera de los enfoques debería funcionar.
Podría hacer LIKE @SEARCH
y en su código C #, hacer
searchString = "%" + searchString + "%"