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!
maby esto ayudará: http://msdn.microsoft.com/en-us/library/ms187582.aspx
SELECT DISTINCT
CasedTheColumn
FROM
(
SELECT TheColumn COLLATE LATIN1_GENERAL_BIN AS CasedTheColumn
FROM myTAble
)FOO
WHERE
CasedTheColumn IN (''A'', ''a''...)