0, NULL, пустая строка, значения по умолчанию - MySql Questions - PullRequest
4 голосов
/ 04 июля 2010
  1. Имеет ли bool значение false == 0 и true == 1
  2. Значение Null в полях varchar, int, date == 0?
  3. Когда по умолчанию в MySQL значения == 0 или NULL или пустая строка?

Ответы [ 3 ]

7 голосов
/ 04 июля 2010

Внутренне в MySQL нет значений bool. Выражения, которые, по-видимому, возвращают логические значения, фактически возвращают целое число 0 или 1:

SELECT (3 < 5)
1

SELECT (3 > 5)
0

SELECT (3 < 4) + (4 < 5)
2

SELECT TRUE
1

TRUE и FALSE - это псевдонимы для 1 и 0.

NULL не равно ни одному значению, даже другому NULL.

SELECT NULL = ''
NULL
SELECT NULL = NULL
NULL

Если вы хотите сравнить с NULL, используйте IS NULL.


Обновление: возникла путаница по поводу того, поддерживает ли MySQL логические значения. В этом примере показано, что даже тип BOOL для столбца по-прежнему представляет собой целое число:

CREATE TABLE table1 (id INT, x BOOL);
INSERT INTO table1 VALUES
(1, TRUE),
(2, FALSE),
(3, 3);  -- Can you insert 3 into a BOOL type? Yep!
SELECT * FROM TABLE1;

Результаты:

id   x
1    1
2    0
3    3
4 голосов
/ 04 июля 2010

Вопрос : Значение bool ложно == 0 и истинно == 1

Да - вы можете проверить с помощью:

SELECT IF(0, 'true', 'false')

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

Вопрос : Значение Null в полях varchar, int, date == 0?

Нет, NULL указывает на отсутствие какого-либо значения вообще.
Вам необходимо использовать специальные операторы, если вы хотите сравнить для значения NULL.

Вопрос : Когда по умолчанию в значениях mysql == 0 или NULL или пустой строке?

Без ограничений по умолчанию, столбцы, которые допускают NULL, будут содержать NULL, если нетпредоставлено значение - независимо от типа данных (DATETIME, числовой, текстовый и т. д.).Столбцы, которые не допускают NULL, будут возвращать ошибку до тех пор, пока не будет предоставлено значение, соответствующее типу данных столбца.Ограничения по умолчанию позволяют вам указать значение по умолчанию, если кто-то пытается вставить значение NULL в столбец или столбец был опущен в операторе INSERT.

1 голос
/ 04 июля 2010

В SQL NULL обозначает отсутствие значения. В MySQL явный NULL также может представлять следующее значение псевдопоследовательности, а неявный NULL может представлять неявное значение по умолчанию (нулевая или пустая строка), определяемое MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...