Как выбрать количество значений типов ENUM в MySql? - PullRequest
11 голосов
/ 10 сентября 2011

Мне нужно выбрать строку из таблицы ниже, но проблема в том, что значение в $row['city'] является текстовым представлением значения, и мне нужен его номер (Торонто = 2).(То же самое, что когда мы вставляем INTO, и вместо текста мы используем номер значения)

Структура таблицы запросов:

req_id INT
uname  VARCHAR(30)
city   ENUM('New York', 'Toronto', 'Las Vegas')

Ответы [ 2 ]

18 голосов
/ 10 сентября 2011

Вам просто нужно принудительно ввести city в числовой контекст из подробного руководства *1003*:

Если вы извлекаете значение ENUM в числовом контексте,возвращается индекс значения столбца.Например, вы можете получить числовые значения из столбца ENUM, например, так:

mysql> SELECT enum_col+0 FROM tbl_name;

Итак, вам нужны такие вещи:

select req_id, city+0
from your_table
where city = 'Toronto'

Кстати, вы можетевставьте enum, используя строковое или целочисленное представление.

2 голосов
/ 21 февраля 2014

Вы можете использовать функцию CAST.Документация не упоминает этот конкретный вариант использования, но работает как положено.Я предпочитаю это, потому что это выглядит изящно и ясно:

SELECT CAST(city AS UNSIGNED) FROM your_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...