Вход/Регистрация
MySQL: руководство профессионала
вернуться

Паутов Алексей В.

Шрифт:

Константа системы (строка, возвращенная функциями типа 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

10.5.5. Объединения должны быть для правильного набора символов

Каждый набор символов имеет одно или большее количество объединений, но каждое объединение связано с одним и только одним набором символов. Следовательно, следующая инструкция вызывает сообщение об ошибке, потому что объединение latin2_bin не допустимо с набором символов latin1:

mysql> SELECT _latin1 'x' COLLATE latin2_bin;

ERROR 1253 (42000): COLLATION 'latin2_bin' is not valid

for CHARACTER SET 'latin1'

10.5.6. Пример эффекта объединения

Предположите, что столбец X в таблице T имеет эти значения столбца latin1:

Muffler

M+ller

MX Systems

MySQL

Предположите также, что значения столбца получены, используя следующую инструкцию:

SELECT X FROM T ORDER BY X COLLATE collation_name;

Следующая таблица показывает возникающий в результате порядок значений, если мы используем ORDER BY с различными объединениями:

latin1_swedish_ci

latin1_german1_ci

latin1_german2_ci

Muffler

Muffler

M+ller

MX Systems

M+ller

Muffler

M+ller

MX Systems

MX Systems

MySQL

MySQL

MySQL

Символ, который вызывает различные порядки сортировки в этом примере: U с двумя точками сверху, который в Германии известен как U-umlaut.

Первый столбец показывает результат SELECT, использующего правило объединения Swedish/Finnish, которое говорит, что U-umlaut сортируется после Y.

Второй столбец показывает результат SELECT, использующего правило German DIN-1, которое говорит, что U-umlaut сортируется с U.

Третий столбец показывает результат SELECT, использующего правило German DIN-2 rule, которое говорит, что U-umlaut сортируется с UE.

10.6. Операции, на которые воздействует поддержка набора символов

Этот раздел описывает операции, которые берут во внимание информацию о наборе символов.

10.6.1. Строки результата

MySQL имеет много операторов и функций, которые возвращают строку. Этот раздел отвечает на вопрос: каков набор символов и объединение у такой строки?

Для простых функций, которые берут строку ввода и возвращают строковый результат как вывод, набор символов и объединение вывода такие же, как таковые у входного значения. Например, UPPER(X) возвращает строку, чья символьная строка и объединение являются такими же, как X. Это относится к INSTR, LCASE, LOWER, LTRIM, MID, REPEAT, REPLACE, REVERSE, RIGHT, RPAD, RTRIM, SOUNDEX, SUBSTRING, TRIM, UCASE и UPPER.

Обратите внимание: функция REPLACE, в отличие от всех других функций, всегда игнорирует объединение строкового ввода и выполняет чувствительное к регистру сравнение.

  • Читать дальше
  • 1
  • ...
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: