c# - tipos - Comportamiento LIKE diferente entre mi aplicación y el asistente de consulta de Access
pasos para generar diferentes tipos de consulta en access (1)
Se está tropezando con la diferencia en los caracteres comodín LIKE entre las consultas que se ejecutan en Access y las consultas que se ejecutan desde una aplicación externa.
Al ejecutar una consulta desde Access, debe utilizar el asterisco como el carácter comodín: LIKE ''*Ra*''
.
Al ejecutar una consulta desde una aplicación externa (como su aplicación C #), debe usar el signo de porcentaje como el carácter comodín: LIKE ''%Ra%''
.
Estoy ejecutando la siguiente consulta desde mi aplicación web y acceda al asistente de consultas de 2007. Y obtengo dos resultados diferentes.
SELECT R.Rept_Name, D.Dist_Name,S.State_Name FROM (tblReporter AS R LEFT JOIN tblDist AS D ON R.Dist_Id=D.Dist_Id) LEFT JOIN tblState AS S ON S.State_Id=R.State_Id WHERE R.Rept_Name LIKE ''*Ra*'' ORDER BY R.Rept_Name;
El resultado de la aplicación web es con 0 filas y desde el asistente de consultas 2 filas. Si elimino la condición en la que ambos resultados son los mismos. Por favor, ayúdenme qué está mal con la consulta. Si necesita otra información, por favor dígame.
Código de aplicación web ...
public DataTable getRept(string rept, string mobno)
{
DataTable dt = new DataTable();
using (OleDbConnection conn = new OleDbConnection(getConnection()))
{
using (OleDbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT R.Rept_Name, D.Dist_Name,S.State_Name FROM (tblReporter AS R LEFT JOIN tblDist AS D ON R.Dist_Id=D.Dist_Id) LEFT JOIN tblState AS S ON S.State_Id=R.State_Id WHERE R.Rept_Name LIKE ''*" + rept + "*'' ORDER BY R.Rept_Name;";
conn.Open();
using (OleDbDataReader sdr = cmd.ExecuteReader())
{
if (sdr.HasRows)
dt.Load(sdr);
}
}
}
return dt;
}