Подтвердить что ты не робот

Почему SQL Server '=' не учитывает регистр данных компаратора?

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

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

Ответ 1

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

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

Ответ 2

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

SELECT  *
  FROM  [Table_1] a inner join
        [Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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