"SELECT DISTINCT" игнорирует разные случаи

У меня проблема, что MSSQL Server 2000 должен выбрать некоторые отдельные значения из таблицы (конкретный столбец относится к типу nvarchar). Существуют иногда одни и те же значения, но в разных случаях, например (псевдокод):

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

вернет

A,b

Но я действительно хочу (и ожидаю)

A,a,b,B

потому что на самом деле это разные значения.

Как решить эту проблему?

Ответ 1

Сводка будет установлена ​​на регистр, нечувствительный к регистру.

Вам нужно сделать что-то вроде этого

Select distinct col1 COLLATE sql_latin1_general_cp1_cs_as
From dbo.myTable

Ответ 2

Используйте BINARY для этой операции. Вставьте столбец в двоичный файл следующим образом:

SELECT DISTINCT BINARY(column1) from table1;

Просто измените column1 и table1 в соответствии с вашей схемой.

Полный пример, который работает для меня в MySQL 5.7, должен работать для других:

SELECT DISTINCT BINARY(gateway) from transactions;

Ура!

Ответ 3

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

Ответ 5

Попробуйте установить сопоставление рассматриваемого столбца на что-то двоичное, например. utf8-bin. Вы можете либо сделать это в самом выражении SELECT, либо напрямую изменить структуру вашей таблицы (что означает, что он не должен отображать сортировка каждый раз, когда запрос выполняется, поскольку он будет хранить его правильно внутренне).