Какой тип данных MySQL использовать для хранения логических значений

Я столкнулся с той же проблемой. Обычно эта ошибка возникает из-за того, что клиент закрыл свое соединение, а сервер все еще пытается писать на этом клиенте. Поэтому убедитесь, что ваш клиент имеет свое соединение открытым до тех пор, пока сервер не выполнит свой выходной поток. И еще одно: Дон не забыл закрыть входной и выходной поток.

Надеюсь, это поможет. И если вы все еще сталкиваетесь с проблемой, чем кратко расскажите о своей проблеме здесь.

1137
задан Peter Mortensen 4 May 2017 в 19:39
поделиться

5 ответов

Для MySQL 5.0.3 и выше, можно использовать BIT. В руководстве говорится:

С MySQL 5.0.3, Тип данных bit используется для хранения значений битового поля. Тип BIT (M) включает устройство хранения данных значений Мбит. M может колебаться от 1 до 64.

Иначе, согласно руководству MySQL можно использовать bool и булевскую переменную, которые являются в данный момент псевдонимами tinyint (1):

Bool, булевская переменная: Эти типы являются синонимами для TINYINT (1). Значение нуля считают ложью. Ненулевые значения считают верными.

MySQL также указывает что:

Мы намереваемся реализовать полную булеву обработку типа, в соответствии со стандартным SQL, в будущем выпуске MySQL.

Ссылки: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

1179
ответ дан Krzysztof Kot 4 May 2017 в 19:39
поделиться

При использовании БУЛЕВА типа это искажается к TINYINT (1). Это является лучшим, если Вы хотите использовать стандартизированный SQL и не возражаете против этого, поле могло бы содержать из значения диапазона (в основном что-либо, что не является 0, будет 'верно').

ПЕРЕЧИСЛЕНИЕ ('Ложь', 'Верная'), позволит Вам использовать строки в своем SQL, и MySQL сохранит поле внутренне как целое число, где 'Ложь' =0 и 'Истинные' =1 на основе порядка Перечисление определяются.

MySQL 5 In + можно использовать НЕМНОГО (1) поле для указания на 1-разрядный числовой тип. Я не полагаю, что это на самом деле использует любого меньше пространства в устройстве хранения данных, но снова позволяет Вам ограничивать возможные значения к 1 или 0.

Все вышеупомянутое будет использовать приблизительно ту же сумму устройства хранения данных, поэтому лучше выбирать тот, который Вы находите самыми легкими работать с.

33
ответ дан Ciaran McNulty 4 May 2017 в 19:39
поделиться

Я использую TINYINT (1) для хранения булевых значений в Mysql.

я не знаю, существует ли какое-либо преимущество для использования этого... Но если я не ошибаюсь, mysql может сохранить булевскую переменную (BOOL), и это хранит его как tinyint (1)

http://dev.mysql.com/doc/refman/5.0/en/other-vendor-data-types.html

18
ответ дан Fred 4 May 2017 в 19:39
поделиться

BOOL и BOOLEAN синонимы TINYINT(1). Нуль false, что-либо еще true. Больше информации здесь .

232
ответ дан Philip Morton 4 May 2017 в 19:39
поделиться

На этот вопрос ответили, но я решил добавить свои 0,02 доллара. Я часто использую CHAR (0), где '' == true и NULL == false.

Из mysql docs

CHAR (0) также довольно хорош, когда вам нужен столбец, который может принимать только два значения: столбец, определенный как CHAR (0) NULL, занимает только одно бит и может принимать только значения NULL и '' (пустая строка).

34
ответ дан 19 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: