"SELECT DISTINCT"忽略了不同的情况

pow*_*bar 36 sql sql-server

我有问题,MSSQL Server 2000应该从表中选择一些不同的值(特定列是nvarchar类型).有时会有相同的值,但具有不同的情况,例如(伪代码):

SELECT DISTINCT * FROM ("A", "a", "b", "B")
Run Code Online (Sandbox Code Playgroud)

会回来的

A,b
Run Code Online (Sandbox Code Playgroud)

但我确实想要(并期待)

A,a,b,B
Run Code Online (Sandbox Code Playgroud)

因为它们实际上是不同的价值观

如何解决这个问题呢?

cod*_*ger 57

排序规则将设置为不区分大小写.

你需要做这样的事情

Select distinct col1 COLLATE sql_latin1_general_cp1_cs_as
From dbo.myTable
Run Code Online (Sandbox Code Playgroud)

  • 别忘了添加'as col1'以避免在结果中丢失列名! (4认同)
  • 我不知道COLLATE,但这就是解决方案。只要允许我(剩下6分钟),我就会接受这一点。谢谢! (2认同)

rad*_*tek 9

使用BINARY进行此操作.将列转换为二进制,如下所示:

SELECT DISTINCT BINARY(column1) from table1;
Run Code Online (Sandbox Code Playgroud)

只需更改column1table1根据您的架构.

在MySQL 5.7中适用于我的完整示例应该适用于其他人:

SELECT DISTINCT BINARY(gateway) from transactions;
Run Code Online (Sandbox Code Playgroud)

干杯!

  • 注意:这是针对 MySQL 的,而不是针对 Microsoft SQL 的。 (2认同)