when w3schools switch hacer example ejemplos cómo sql sql-server

w3schools - select case sql ejemplos



El servidor SQL ignora el caso en una expresión where (6)

¿Cómo construyo una consulta SQL (MS SQL Server) donde la cláusula "where" no distingue entre mayúsculas y minúsculas?

SELECT * FROM myTable WHERE myField = ''sOmeVal''

Quiero que los resultados vuelvan ignorando el caso


¿En qué base de datos estás? Con MS SQL Server, es una configuración de toda la base de datos, o puede sobrepasarla por consulta con la palabra clave COLLATE.


En la configuración predeterminada de una base de datos de SQL Server, las comparaciones de cadenas no distinguen entre mayúsculas y minúsculas. Si su base de datos anula esta configuración (mediante el uso de una intercalación alternativa), deberá especificar qué tipo de colación usar en su consulta.

SELECT * FROM myTable WHERE myField = ''sOmeVal'' COLLATE SQL_Latin1_General_CP1_CI_AS

Tenga en cuenta que la compilación que proporcioné es solo un ejemplo (aunque es más que probable que funcione bien para usted). here puede encontrar un resumen más completo de las intercalaciones de SQL Server.


Encontré otra solución en otro lugar; es decir, para usar

upper(@yourString)

pero todos aquí están diciendo que, en SQL Server, no importa porque de todos modos está ignorando el caso. Estoy bastante seguro de que nuestra base de datos distingue entre mayúsculas y minúsculas.


No, solo usar LIKE no funcionará. LIKE busca valores que coincidan exactamente con su patrón dado. En este caso LIKE encontraría solo el texto ''sOmeVal'' y no ''someval''.

Una solución práctica utiliza la función LCASE() . LCASE(''sOmeVal'') obtiene la cadena minúscula de su texto: ''someval''. Si usa esta función para ambos lados de su comparación, funciona:

SELECT * FROM myTable WHERE LCASE(myField) LIKE LCASE(''sOmeVal'')

La declaración compara dos cadenas en minúscula, de modo que su ''sOmeVal'' coincidirá con cualquier otra notación de ''someval'' (por ejemplo, ''Someval'',''OMEVAM '', etc.).


Por lo general, las comparaciones de cadenas no distinguen entre mayúsculas y minúsculas. Si su base de datos está configurada para una intercalación sensible a mayúsculas y minúsculas, debe forzar el uso de mayúsculas y minúsculas:

SELECT balance FROM people WHERE email = ''[email protected]'' COLLATE SQL_Latin1_General_CP1_CI_AS


Puedes forzar el uso de mayúsculas y minúsculas, lanzando a un varbinary como ese:

SELECT * FROM myTable WHERE convert(varbinary, myField) = convert(varbinary, ''sOmeVal'')