“SELECT DISTINCT” ignores different cases
我有一个问题,MSSQLServer2000应该从一个表中选择一些不同的值(特定的列是nvarchar类型)。有时有相同的值,但有不同的情况,例如(伪代码):
1 | SELECT DISTINCT * FROM ("A","a","b","B") |
会回来的
1 | A,b |
号
但我确实想要(也确实期待)
1 | A,a,b,B |
因为它们实际上是不同的值。
如何解决这个问题?
排序规则将设置为不区分大小写。
你需要这样做
1 2 | SELECT DISTINCT col1 COLLATE sql_latin1_general_cp1_cs_as FROM dbo.myTable |
对此操作使用二进制。将列强制转换为二进制,如下所示:
1 | SELECT DISTINCT BINARY(column1) FROM table1; |
只需根据您的模式更改
我在MySQL5.7中使用的完整示例应该适用于其他人:
1 | SELECT DISTINCT BINARY(gateway) FROM transactions; |
。
干杯!
1 2 3 4 5 6 7 8 9 | SELECT DISTINCT CasedTheColumn FROM ( SELECT TheColumn COLLATE LATIN1_GENERAL_BIN AS CasedTheColumn FROM myTAble )FOO WHERE CasedTheColumn IN ('A', 'a'...) |
号
尝试将相关列的排序规则设置为二进制,例如utf8 bin。您可以在