studio management gratuita documentacion sql sql-server

sql - management - "SELECT DISTINCT" ignora casos diferentes



sql server management studio (5)

Tengo el problema, que MSSQL Server 2000 debe seleccionar algunos valores distintos de una tabla (la columna específica es del tipo nvarchar). Existen a veces los mismos valores, pero con casos diferentes, por ejemplo (pseudocódigo):

SELECT DISTINCT * FROM ("A", "a", "b", "B")

volvería

A,b

Pero sí quiero (y espero)

A,a,b,B

Porque en realidad son valores diferentes.

¿Cómo resolver este problema?


Intente configurar la collation de la columna en cuestión en algo binario, por ejemplo, utf8-bin . Puede hacerlo en la propia instrucción SELECT o cambiando su estructura de tabla directamente (lo que significa que no tiene que asignar la intercalación cada vez que se ejecuta la consulta, ya que la almacenará correctamente internamente).


La colación se establecerá en mayúsculas y minúsculas.

Necesitas hacer algo como esto

Select distinct col1 COLLATE sql_latin1_general_cp1_cs_as From dbo.myTable


Use BINARY para esta operación. Echa la columna a binario así:

SELECT DISTINCT BINARY(column1) from table1;

Simplemente cambie column1 y table1 según su esquema.

El ejemplo completo que funciona para mí en MySQL 5.7, debería funcionar para otros:

SELECT DISTINCT BINARY(gateway) from transactions;

¡Aclamaciones!



SELECT DISTINCT CasedTheColumn FROM ( SELECT TheColumn COLLATE LATIN1_GENERAL_BIN AS CasedTheColumn FROM myTAble )FOO WHERE CasedTheColumn IN (''A'', ''a''...)