Ответ 1
Нет, чувствительность к регистру не имеет никакого отношения к знаку равенства.
Чувствительность к регистру определяется путем сопоставления базы данных - Подробнее см. в документации.
Я просто понял, что компаратор SQL '='
при использовании для сравнения текста нечувствителен к регистру. У меня есть несколько вопросов относительно этой функциональности:
lower
, чтобы сравнить текст до сих пор нечувствительно. По-прежнему ли хорошая идея следовать за этим?'='
по умолчанию не учитывает регистр, нечувствительный к регистру?Нет, чувствительность к регистру не имеет никакого отношения к знаку равенства.
Чувствительность к регистру определяется путем сопоставления базы данных - Подробнее см. в документации.
Чувствительность к регистру зависит только от сортировки.
Вы можете указать сортировку в каждой операции '='
SELECT *
FROM [Table_1] a inner join
[Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI
Чувствительность к регистру операций в SQL Server определяется во время установки, когда вы устанавливаете сопоставление для базы данных. В этот момент вы можете установить SQL Server как нечувствительный к регистру (по умолчанию) или чувствительный к регистру.
http://msdn.microsoft.com/en-us/library/aa197951(v=sql.80).aspx
Я использовал нижнюю функцию, чтобы сравнить текст до сих пор нечувствительно. По-прежнему хорошая идея следовать за тем же?
Абсолютно нет. Как правило, это исключает использование индекса, если вы это сделаете. Обычный старый = (или < или > или любой другой) будет работать или нет, в зависимости от выбранного вами сортировки. Не делайте этого "просто для того, чтобы быть в безопасности". Тестирование гарантирует, что у вас все получится.
Как делается сравнение, зависит от выбранного вами сопоставления. Если вы измените поле, чтобы использовать случайную сортировку, сравнение будет чувствительным к регистру.
По умолчанию поля используют набор сопоставлений для базы данных, но каждое поле может иметь собственную настройку сортировки.