"Seleccionar distintivo" ignora los casos diferentes -- sql campo con sql-server camp Relacionados El problema

“SELECT DISTINCT” ignores different cases


47
vote

problema

Español

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

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

volvería

  A,b   

pero quiero (y espero)

  A,a,b,B   

Porque en realidad son valores diferentes.

¿Cómo resolver este problema?

Original en ingles

I have the problem, that MSSQL Server 2000 should select some distinct values from a table (the specific column is of the nvarchar type). There are the sometimes the same values, but with different cases, for example (pseudocode):

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

would return

A,b 

But I do want (and do expect)

A,a,b,B 

because they actually are different values.

How to solve this problem?

     
 
 

Lista de respuestas

74
 
vote
vote
La mejor respuesta
 

La colación se establecerá en caso insensible.

Necesitas hacer algo así

  Select distinct col1 COLLATE sql_latin1_general_cp1_cs_as From dbo.myTable   
 

The collation will be set to case insensitive.

You need to do something like this

Select distinct col1 COLLATE sql_latin1_general_cp1_cs_as From dbo.myTable 
 
 
     
     
8
 
vote

No estoy seguro de MS SQL pero con MySQL o Postgres, use BINARY para esta operación. Reparta la columna a Binary así:

  SELECT DISTINCT BINARY(column1) from table1;   

Simplemente cambie column1 y table1 según su esquema.

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

  SELECT DISTINCT BINARY(gateway) from transactions;   

vítores!

 

Not sure about MS SQL but with MySQL or postgres, use BINARY for this operation. Cast the column to binary like so:

SELECT DISTINCT BINARY(column1) from table1; 

Just change column1 and table1 as per your schema.

Full example that works for me in MySQL 5.7, should work for others:

SELECT DISTINCT BINARY(gateway) from transactions; 

Cheers!

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

Intente configurar el Collación de la columna en cuestión a algo binario, por ejemplo, UTF8-bin . Puede hacer eso en el SELECT Declaración en sí misma o cambiando su estructura de tabla directamente (lo que significa que no tiene que asignar la colación cada vez que se ejecuta la consulta, ya que lo almacenará correctamente internamente).

 

Try setting the collation of the column in question to something binary, e.g. utf8-bin. You can either do that in the SELECT statement itself or by changing your table structure directly (which means it doesn't have to map the collation each time the query is run, since it will store it correctly internally).

 
 

Relacionados problema

321  Base de datos de SQL Server de versiones  ( Versioning sql server database ) 
Quiero obtener mis bases de datos en Control de versión. ¿Alguien tiene algún consejo o artículos recomendados para comenzar? Siempre querré tener al menos ...

87  SQL Server 2005 Implementación de MySQL Reemplazar en?  ( Sql server 2005 implementation of mysql replace into ) 
MySQL tiene este comando increíblemente útil y propietario 99887776611 SQL. ¿Se puede emular fácilmente en SQL Server 2005? Inicio de una nueva transacc...

146  ¿Marque los cambios en una tabla de SQL Server?  ( Check for changes to an sql server table ) 
¿Cómo puedo monitorear una base de datos de SQL Server para cambios en una tabla sin usar desencadenantes o modificando la estructura de la base de datos de n...

88  Cómo exportar datos de SQL Server 2005 a MySQL [CERRADO]  ( How to export data from sql server 2005 to mysql ) 
cerrado. Esta pregunta es off-topic . Actualmente no está aceptando respuestas. ¿Quieres ...

27  ¿Es apropiado Windows Server 2008 "Server Core" apropiado para una instancia de SQL Server?  ( Is windows server 2008 server core appropriate for a sql server instance ) 
Estoy configurando un cuadro dedicado de SQL Server 2005 en Windows Server 2008 esta semana, y quisiera apagarlo para ser lo más barboles posible mientras aún...

14  Collación del cliente y SQL Server 2005  ( Client collation and sql server 2005 ) 
Estamos actualizando un programa existente de Win2k/SQL Server 2k a Windows 2003 and SQL Server 2005 , así como la compra de un nuevo programa que también ...

26  ¿Por qué la indexación de texto completo de SQL no tiene resultados de devolución de texto para las palabras que contienen #?  ( Why doesnt sql full text indexing return results for words containing ) 
Por ejemplo, mi consulta es como la siguiente utilizando SQL Server 2005: SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') Tengo un índice de tex...

30  Desplegando bases de datos de SQL Server de la prueba para vivir  ( Deploying sql server databases from test to live ) 
Me pregunto cómo ustedes administran la implementación de una base de datos entre 2 servidores SQL, específicamente SQL Server 2005. Ahora, hay un desarrollo ...

30  Edición de registros de bases de datos por múltiples usuarios  ( Editing database records by multiple users ) 
He diseñado tablas de base de datos (normalizada, en un servidor MS SQL) y creó un extremo frontal independiente de Windows para una aplicación que será utili...

37  Actualización de SQL Server 6.5  ( Upgrading sql server 6 5 ) 
Sí, lo sé. La existencia de una copia en funcionamiento de SQL Server 6.5 en 2008 es absurda. que estipuló, ¿cuál es la mejor manera de migrar desde 6.5 ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos