Почему SQL Server '=' не учитывает регистр компаратора? - PullRequest
20 голосов
/ 09 февраля 2011

Я только что понял, что SQL Server '=' компаратор при использовании для сравнения текста нечувствителен к регистру.У меня есть несколько вопросов относительно этой функциональности:

  1. Это одинаково для всех баз данных или специфично для сервера SQL?
  2. Я использовал функцию lower, чтобы гарантировать, что сравнение текста до сих пор не чувствительно.Является ли все еще хорошей идеей следовать тому же самому?
  3. Как мы можем проводить сравнения с учетом регистра в SQL-сервере?
  4. Почему оператор '=' по умолчанию использует сравнение без учета регистра?1014 *

Ответы [ 5 ]

25 голосов
/ 09 февраля 2011

Нет, чувствительность к регистру не имеет ничего общего со знаком равенства.

Чувствительность к регистру определяется с помощью сопоставления для базы данных - Подробнее см. В документации .

12 голосов
/ 09 февраля 2011

Чувствительность к регистру зависит только от параметров сортировки. Вы можете указать параметры сортировки в каждой '=' операции

SELECT  *
  FROM  [Table_1] a inner join
        [Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI
5 голосов
/ 09 февраля 2011

Я использовал нижнюю функцию, чтобы гарантировать, что сравнение текста до сих пор не чувствительно.Это все еще хорошая идея следовать за тем же самым?

Абсолютно нет.Как правило, вы исключаете использование индекса, если вы делаете это.Обычная старая = (или <или> или любая другая) будет либо работать, либо не работать в зависимости от выбранной вами сортировки.Не делайте этого «просто чтобы быть в безопасности».Тестирование позволит убедиться, что вы правильно поняли.

3 голосов
/ 09 февраля 2011

Чувствительность к регистру операций в SQL Server определяется во время установки при установке параметров сортировки для базы данных.В этот момент вы можете установить SQL Server без учета регистра (по умолчанию) или с учетом регистра.

http://msdn.microsoft.com/en-us/library/aa197951(v=sql.80).aspx

1 голос
/ 09 февраля 2011

Способ сравнения зависит от того, какое сопоставление вы выбрали для поля. Если вы измените поле для использования сортировки с учетом регистра, сравнения будут с учетом регистра.

По умолчанию поля используют набор параметров сортировки для базы данных, но каждое поле может иметь собственную настройку параметров сортировки.

...