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

Сравнение строк SQL, большее и меньшее, чем операторы

Я новичок в изучении SQL.

Я сомневаюсь в чем-то.

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

Сравнение было выполнено с использованием символов больше ( > ) и меньше (<), является ли это возможным способом сравнения строк в SQL? и как это действует? строка, меньшая, чем другая, предшествует в словаре порядке? Например, мяч меньше, чем вода? и это сравнение чувствительно к регистру? например, BALL < вода, верхний символ влияет на эти сравнения?

Я гугл в течение нескольких часов, но я не смог найти ничего, что могло бы избавить меня от этих сомнений.

4b9b3361

Ответ 1

Операторы сравнения (включая < и >) работают со строковыми значениями, а также с номерами.

Для MySQL

"По умолчанию сравнения строк не чувствительны к регистру и используют текущий набор символов. По умолчанию используется latin1 (cp1252 западноевропейский), что также хорошо подходит для английского языка.

Сравнение строк будет чувствительным к регистру, если сопоставление строк в сопоставлении строк чувствительно к регистру, то есть имя набора символов заканчивается на _cs, а не _ci. Нет смысла повторять всю информацию, которая доступна в Справочном руководстве MySQL здесь.

Справочник операторов сравнения MySQL:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html

Дополнительная информация о MySQL-символах/коллаборациях:
http://dev.mysql.com/doc/refman/5.5/en/charset.html


Чтобы ответить на заданные вами вопросы:

Q: - это возможный способ сравнения строк в SQL?

A: Да, как в MySQL, так и в SQL Server


Q: и как он действует?

A: Оператор сравнения возвращает логическое значение: TRUE, FALSE или NULL.


Q: строка, меньшая, чем другая, предшествует в порядке словаря? Например, мяч меньше, чем вода?

A: Да, потому что 'b' приходит перед 'w' в сортировке characteset, выражение

  'ball' < 'water'

вернет TRUE. (Это зависит от набора символов и от сортировки.


Q:, и это сравнение чувствительно к регистру?

A: Независимо от того, зависит ли конкретное сравнение с регистром или нет, зависит от сервера базы данных; по умолчанию оба SQL Server и MySQL нечувствительны к регистру.

В MySQL можно выполнить сравнения строк, указав сопоставление наборов символов, чувствительность к регистру (имя набора символов будет заканчиваться на _cs, а не _ci)


Q: Например, BALL < вода, характер верхнего регистра влияет на эти сравнения?

A: По умолчанию в SQL Server и MySQL выражение

  'ball' < 'water'

вернет TRUE.

Ответ 2

В Microsoft SQL Server сопоставление определяет правила словаря для сравнения и сортировки символьных данных в отношении:

  • чувствительность к регистру
  • чувствительность к акценту
  • чувствительность к ширине
  • чувствительность kana

SQL Server также включает в себя двоичные сопоставления, где сравнение и сортировка выполняется с помощью двоичной кодовой точки, а не словарных правил. Однажды вы можете выбирать из множества сортировок в соответствии с желаемой чувствительностью. Сортировка по умолчанию, выбранная для латинских языковых локалей во время установки SQL, нечувствительна к регистру и чувствительна к акценту.

Коллизия указана в экземпляре (во время установки), базе данных и уровне столбца. Сопоставление экземпляров определяет сортировку объектов уровня экземпляра, таких как логины и имена баз данных, а также идентификаторы переменных, меток GOTO и временных таблиц. Сопоставление базы данных (аналогично сопоставлению экземпляров по умолчанию) определяет сортировку идентификаторов базы данных, таких как имена таблиц и столбцов, а также литералы. Сопоставление столбцов (по умолчанию совпадает с настройкой базы данных) определяет сортировку этого столбца.

Конечно, можно сравнить строки, используя '<', ' > ', '< > ', LIKE, BETWEEN и т.д.