sensitive query sql sql-server case-sensitive

sql server case sensitive query



¿Por qué el comparador de SQL Server ''='' no distingue entre mayúsculas y minúsculas? (5)

Acabo de darme cuenta de que ''='' comparador ''='' servidor SQL cuando se usa para la comparación de texto no distingue entre mayúsculas y minúsculas. Tengo algunas preguntas con respecto a esta funcionalidad:

  1. ¿Es lo mismo para todas las bases de datos o específico para el servidor SQL?
  2. He estado usando la función lower para garantizar que la comparación de texto sea insensible hasta ahora. ¿Sigue siendo una buena idea seguir lo mismo?
  3. ¿Cómo podemos hacer comparaciones entre mayúsculas y minúsculas en el servidor SQL?
  4. ¿Por qué ''='' operador ''='' omitiendo la comparación entre mayúsculas y minúsculas?

He estado usando la función inferior para garantizar que la comparación de texto sea insensible hasta ahora. ¿Sigue siendo una buena idea seguir lo mismo?

Absolutamente no. Por lo general, usted excluirá el uso de un índice si hace esto. Plain old = (o <or> o lo que sea) funcionará o no dependiendo de la clasificación que haya elegido. No hagas esto "solo para estar seguro". Las pruebas asegurarán que lo hayas hecho bien.


La forma en que se realiza la comparación depende de la intercalación que haya elegido para el campo. Si cambia el campo para utilizar una compilación sensetive de caso, las comparaciones serán sensetive de caso.

De forma predeterminada, los campos utilizan el conjunto de intercalación para la base de datos, pero cada campo puede tener su propia configuración de intercalación.


La sensibilidad a las mayúsculas de las operaciones en SQL Server se determina durante la instalación cuando establece la intercalación para la base de datos. En ese momento, puede elegir instalar SQL Server como no sensible a mayúsculas (predeterminado) o sensible a mayúsculas y minúsculas.

http://msdn.microsoft.com/en-us/library/aa197951(v=sql.80).aspx


La sensibilidad del caso depende solo de la colación. Puede especificar la intercalación dentro de cada operación ''=''

SELECT * FROM [Table_1] a inner join [Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI