Значение этого оператора SELECT, который делает сравнение двух строковых значений - PullRequest
1 голос
/ 17 апреля 2020

Я читаю MySQL за 10 минут .

На странице 63 есть пример, который не очень хорошо объяснен.

SELECT 'abc' = 'ABC';

Это дает следующий результат:

+----------------+
| 'abc' = 'ABC'  |
+----------------+
|              1 |
+----------------+

Что означает запись в таблице "1"? Означает ли это, что значение выражения 'ab c' = 'AB C' равно 1? Или это означает, что есть одна строка, для которой выражение истинно?

Я провел быстрый поиск в Google, который говорит, что SQL должен иметь логический тип, который дает значение условных выражений. Это верно? Если это так, то почему значение таблицы 1, а не логическое значение?

Ответы [ 2 ]

4 голосов
/ 17 апреля 2020

1 является представлением логического (True) точно так же. В случае MySQL фактически 1 - это буквально то, как оно представляет True, поскольку у него нет собственного логического типа .

Вы правы в своем предположении, запрос оценивает ab c = AB C, и результат равен True, поэтому значение 1, которое вы видите, является просто оцененным значением.

3 голосов
/ 17 апреля 2020

MySQL поддерживает логические значения в виде целых чисел. Значение логического выражения: 1 для true и 0 для false. Итак, 1 означает «правда». Большинство других баз данных либо возвращают ошибку (потому что они не поддерживают логические типы), либо дают значение как true.

С логическими операторами правила таковы, что 0 имеет значение false и что-либо кроме 0NULL) считается истинным.

...