Сравнение строк SQL, большее и меньшее, чем операторы
Я новичок в изучении SQL.
Я сомневаюсь в чем-то.
Сегодня я просмотрел несколько примеров запросов, и я нашел некоторые сравнения строк в условии WHERE.
Сравнение было выполнено с использованием символов больше ( > ) и меньше (<), является ли это возможным способом сравнения строк в SQL? и как это действует? строка, меньшая, чем другая, предшествует в словаре порядке? Например, мяч меньше, чем вода? и это сравнение чувствительно к регистру? например, BALL < вода, верхний символ влияет на эти сравнения?
Я гугл в течение нескольких часов, но я не смог найти ничего, что могло бы избавить меня от этих сомнений.
Ответы
Ответ 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 и т.д.