Поиск

Тип ENUM

ЕЫОМ (перечисление)- это строковый объект, имеющий значение, выбранное из спи­ска допустимых, которые явно перечислены в спецификации столбца во время создания таблицы.
При некоторых условиях значение может быть также пустой строкой () или NULL:

  1. Если вы вставляете недопустимое значение в столбец типа ЕТШ (то есть, строку, которой нет в списке допустимых значений), то вставляется пустая строка в качестве специального ошибочного значения. Эту строку можно отличить от нормальной пустой строки по тому признаку, что она имеет числовое значение 0.
    Подробнее об этом будет сказано далее.
  2. Если столбец типа ENUM объявлен как допускающий значение NULL, то NULL - это корректное значение для него, и это значение по умолчанию. Если же столбец объявлен как NOT NULL, то значением по умолчанию будет первое из ее списка допустимых значений.
Каждое перечислимое значение имеет индекс:

  1. Значения из списка допустимых, указанных в спецификации столбца, пронумерованы, начиная с 1.
  2. Индексное значение пустой строки равно 0. Это означает, что вы можете использовать следующий оператор SELECT, чтобы найти строки, в которые вставлялось неверное значение ENUM:

mysql SELECT * FROM имя_таблицы WHERE столбец_епит = 0;

  • Индекс значения NULL равен NULL.
    Например, столбец, определенный как ENUM (' one',' two',' three'), может иметь лю­бое из значений, показанных ниже. Соответствующий каждому значению числовой ин­декс также показан:

    Перечисление может иметь максимум 65535 элементов.
    Начиная с версии MySQL 3.23.51, завершающие пробелы автоматически удаляются из значений-членов ENUM при создании таблицы.
    Когда столбцу ENUM присваивается значение, регистр символов роли не играет. Одна­ко значения, извлеченные из столбца позже, отображаются в нижнем регистре, как было при определении столбца.
    Если вы извлекаете значение ENUM в числовом контексте, возвращается индекс значе­ния столбца. Например, вы можете извлечь числовые значения столбца ENUM следующим образом:
    mysql SELECT столбец_епит + О FROM имя_таблицы;
    Если вы сохраняете число в столбце ENUM, число рассматривается как индекс и сохра­няемое значение - это член перечисления с этим индексом. (Однако это не работает с load data INFILE, который трактует весь ввод как строки.) Мы не советуем определять столбцы ENUM со значениями, выглядящими как числа, потому что это легко может при­вести к путанице. Например, следующий столбец имеет перечислимые строковые значе­ния '0', '1' и '2', но числовыми значениями индекса будут 1, 2 и 3:
    numbers ENUM('O', Ч', '2')
    Значения ENUM сортируются в соответствии с порядком, в котором члены перечислений приведены в спецификации столбца (Другими словами, значения ENUM сортируются в соот­ветствии с их числовыми индексами.) Например ' а' предшествует ' b' для ENUM (' а',' b'), но ' b' предшествует ' а' для ENUM (' b',' а'). Пустые строки предшествуют непустым стро­кам, а значения NULL предшествуют всем остальным. Чтобы предотвратить неожиданные результаты, определяйте списки значений ENUM в алфавитном порядке. Вы также можете применить GROUP BY CAST (столбец AS VARCHAR) или GROUP BY CONCAT (столбец), чтобы обеспечить сортировку столбца в лексическом порядке, а не по порядку номеров индексов.

    Если вы хотите просмотреть все возможные значения столбца ENUM, воспользуйтесь SHOW COLUMNS FROM имя_таблицы LIKE столбец_епиш и проанализируйте определение ЕШМ во втором столбце вывода.