Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Старшинство предложения COLLATEСодержание книги
Поиск на нашем сайте
Предложение COLLATE имеет высокое старшинство (выше, чем ||), так следующие два выражения эквивалентны: x || y COLLATE z x || (y COLLATE z)
Оператор BINARY
Оператор BINARY приводит строку после него к двоичной строке. Это простой способ вынудить сравнение быть выполненным байт в байт, а не символ в символ. BINARY также заставляет конечные пробелы быть значительными.
mysql> SELECT 'a' = 'A'; – > 1 mysql> SELECT BINARY 'a' = 'A'; – > 0 mysql> SELECT 'a' = 'a '; – > 1 mysql> SELECT BINARY 'a' = 'a '; – > 0
BINARY str сокращение для CAST(str AS BINARY).
Атрибут BINARY на символьных определениях столбца имеет различный эффект. Символьному столбцу, определенному с атрибутом BINARY, назначено двоичное объединение набора символов столбца. Каждый набор символов имеет двоичное объединение. Например, двоичное объединение для набора символов latin1: latin1_bin, так что, если набор символов по умолчанию таблицы latin1, эти два столбца определены эквивалентно:
CHAR(10) BINARY CHAR(10) CHARACTER SET latin1 COLLATE latin1_bin
Эффект BINARY как атрибута столбца отличается от эффекта до MySQL 4.1. Прежде BINARY помечал столбец, который обрабатывался как двоичная строка, то есть строка байтов, которая не имеет никакого набора символов или объединения, что отличается от не двоичной символьной строки, которая имеет двоичное объединение. Для обоих типов строк сравнения основаны на числовых значениях строкового модуля, но для не двоичных строк, модулем является символ, и некоторые наборы символов позволяют многобайтовые символы.
Использование CHARACTER SET binary на определении столбца CHAR, VARCHAR или TEXT заставляет столбец обрабатываться как двоичный тип данных. Например, следующие пары определений эквивалентны:
CHAR(10) CHARACTER SET binary BINARY(10) VARCHAR(10) CHARACTER SET binary VARBINARY(10) TEXT CHARACTER SET binary BLOB
Некоторые специальные случаи, где определение объединения сложно
В большинстве инструкций, очевидно, какое объединение MySQL использует, чтобы решить операцию сравнения. Например, в следующих случаях, должно быть четко ясно, что объединением будет объединение столбца x: SELECT x FROM T ORDER BY x; SELECT x FROM T WHERE x = x; SELECT DISTINCT x FROM T;
Однако, когда включаются многократные операнды, может иметься неоднозначность. Например: SELECT x FROM T WHERE x = 'Y';
Это должно использовать объединение из столбца x или от литерала строки 'Y'?
Стандарт SQL решает такие вопросы, применяя правило coercibility. В основном это означает: раз x и 'Y' имеют объединения, которое объединение имеет приоритет? Это может быть трудно решить, но следующие правила покрывают большинство ситуаций:
Явное предложение COLLATE имеет 0 (не имеет coercible вообще).
Конкатенация двух строк с различными объединениями имеет coercibility 1.
Объединение столбца, сохраненного стандартного параметра или локальной переменной имеет coercibility 2.
Константа системы (строка, возвращенная функциями типа USER() или VERSION()) имеет coercibility 3.
Объединение литерала имеет coercibility 4.
NULL или выражение, которое получено из NULL, имеет coercibility 5.
Предшествующие значения coercibility текущие для MySQL 5.1.
Эти правила решают неоднозначности следующим способом:
Используют объединение с самым низким значение coercibility.
Если обе стороны имеют тот же самый coercibility, то это ошибка, если объединения не те же самые.
Пример:
column1 = 'A' Использует объединение column1
column1 = 'A' COLLATE x Использует объединение 'A' COLLATE x
column1 COLLATE x = 'A' COLLATE y Ошибка Функция COERCIBILITY() может использоваться, чтобы определить coercibility строкового выражения:
mysql> SELECT COERCIBILITY('A' COLLATE latin1_swedish_ci); – > 0 mysql> SELECT COERCIBILITY(VERSION()); – > 3 mysql> SELECT COERCIBILITY('A'); – > 4
|
||||
Последнее изменение этой страницы: 2021-01-14; просмотров: 78; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.21.44.115 (0.009 с.) |