Principales respuestas
Consulta en SQL sin importar entre mayúsculas y Minúsculas.

Pregunta
-
Buenas tardes, tengo una consulta, y como hago para que SQL me traiga un codigo sin importar si tiene o no mayusculas o minisculas, ya lo e intentado muchas veces y no me da :/
Como ven tengo por ejemplo la palabra Junk así esta en la Base de datos, pero quiero que donde dice JUANK en mayúscula también le asigne el mismo código que seria el 205
Aqui dejo el código en C#:
for (int n = 0; n <= dataGridView1.RowCount; n++)
{
string p = dataGridView1.Rows[n].Cells[1].FormattedValue.ToString();
if (dataGridView1.Rows[n].Cells[1].Value != null)
{
string[] operadores = { ",", ".", "!", "?", ";", ":", " ", " ", "¿", "/", "'", };
string[] words = p.Split(operadores, StringSplitOptions.RemoveEmptyEntries);
foreach (string temp in words)
{
Convert.ToString(temp);
SqlCommand cmd = new SqlCommand("SELECT codigo , respuesta FROM Respuestas WHERE respuesta LIKE '%" + temp + "%' COLLATE Latin1_General_CS_AS", connection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
System.Data.DataTable dt = new System.Data.DataTable();
da.Fill(dt);
if (temp != null)
{
if (temp.Equals(temp, StringComparison.OrdinalIgnoreCase))
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
dataGridView1.Rows[l].Cells[t].Value = dt.AsEnumerable()
.Where(x => x.Field<string>("respuesta") == Convert.ToString(temp))
.Select(x => Convert.ToInt32(x.Field<string>("Codigo"))).FirstOrDefault();
t = t + 1;
break;
}
}
else
{
MessageBox.Show("Error");
}
}
if (n > 1000000000)
{
break;
}
}
t = 2;
l = l + 1;
}
if (n == cont - 1)
{
break;
}
}TEMP, es la palabra de cada celda, ya con el split echo.
muchas gracias por su colaboración...!!!
Respuestas
-
Ya por fin lo solucione TOCABA PONER EL UPPER EN ESTA PARTE DEL CODIGO
foreach (DataGridViewRow row in dataGridView1.Rows)
{
dataGridView1.Rows[l].Cells[t].Value = dt.AsEnumerable()
.Where(x => x.Field<string>("respuesta") == Convert.ToString(temp.ToUpper()))
.Select(x => Convert.ToInt32(x.Field<string>("Codigo"))).FirstOrDefault();
t = t + 1;
break;
}gracias igualmente!!!
- Marcado como respuesta Jairo Arturo Cifuentes miércoles, 9 de agosto de 2017 16:32
Todas las respuestas
-
Haces lo opuesto a lo que buscas, debes de buscar una intercalación que no exija sensibilidad a las mayúsculas 'CI' y aplicarlo al lado derecho de la columna que quieres invalidar la intercalación configurada. Sin embargo, queda simple si comparas ambos lados de la expresión bajo la misma "forma del carácter", por ejemplo:
...WHERE UPPER(respuesta) LIKE '%" + UPPER(temp) + "%'", connection);
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.- Propuesto como respuesta Jorge TurradoMVP martes, 8 de agosto de 2017 22:03
-
-
Buenas compañero,
El problema es que el compañero Williams se le han ido dos comillas
"Select codigo, respuesta from respuestas where upper(respuesta) like '%upper(" + temp + ")%' "
Prueba y nos comentas.
No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!
-
"...WHERE UPPER(respuesta) LIKE '%' + '" + temp.ToUpper() + "' + '%'", connection);
Actualiza la expresión por favor, sin embargo, creo que está por demás advertir que concatenar expresiones a la cadena que contiene la consulta sql no es la manera correcta, debes de parametrizar la consulta.
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.- Propuesto como respuesta Jorge TurradoMVP martes, 8 de agosto de 2017 22:14
-
-
Ya por fin lo solucione TOCABA PONER EL UPPER EN ESTA PARTE DEL CODIGO
foreach (DataGridViewRow row in dataGridView1.Rows)
{
dataGridView1.Rows[l].Cells[t].Value = dt.AsEnumerable()
.Where(x => x.Field<string>("respuesta") == Convert.ToString(temp.ToUpper()))
.Select(x => Convert.ToInt32(x.Field<string>("Codigo"))).FirstOrDefault();
t = t + 1;
break;
}gracias igualmente!!!
- Marcado como respuesta Jairo Arturo Cifuentes miércoles, 9 de agosto de 2017 16:32