Виктор Гольцман - MySQL 5.0. Библиотека программиста стр 22.

Шрифт
Фон

...

Примечание

Иногда проверить условие можно несмотря на то, что один из операндов равен NULL (см., например, описание операторов BETWEEN и IN в этом подразделе); в этом случае возвращается значение 1 или 0.

Начнем с рассмотрения оператора, проверяющего равенство двух операндов.

Оператор x = y

Оператор "равно" возвращает следующие значения:

• 1 (TRUE) – если х и y совпадают;

• 0 (FALSE) – если х и y различны;

• NULL – если по крайней мере один из операндов равен NULL.

Например, выберите из таблицы Customers (Клиенты) строки, в которых значение в столбце name равно "Крылов":

SELECT * FROM Customers WHERE name = \'КРЫЛОВ\

Результат этого запроса представлен в табл. 3.1. Таблица 3.1. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Как вы видите, при сравнении строк с помощью этого оператора регистр символов не учитывается.

Следующий оператор также проверяет равенство двух операндов.

Оператор x < = > у

В случае, когда оба операнда не равны NULL, данный оператор аналогичен оператору "равно". Если один из операндов равен NULL, оператор < = > возвращает значение 0 (FALSE), а если оба операнда равны NULL – значение 1 (TRUE).

Например, запрос

SELECT 100 = NULL, 100< = >NULL, NULL = NULL, NULL< = >NULL;

возвращает результат (табл. 3.2) и наглядно иллюстрирует различие между операторами = и < = >. Таблица 3.2. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Следующие операторы проверяют равенство операнда какому-либо логическому значению.

Оператор x IS y, где y – TRUE, FALSE, UNKNOWN или NULL

Выражением IS TRUE возвращает 1 (TRUE), если x – отличное от нулячисло или отличная от нулевой ("0000-00-00 00:00:00") дата и/или время, и 0 (FALSE) – в остальных случаях.

Выражением IS FALSE возвращает 1 (TRUE), еслихравен нулю либо нулевой дате и/или времени, и 0 (FALSE) – в остальных случаях.

...

Примечание

Если x является символьной строкой, то перед сравнением с TRUE или FALSE эта строка преобразуется в число. Для этого отбрасываются все символы, начиная с первого, недопустимого в числовом значении, а начальная подстрока рассматривается как число. Если первый символ в значении – буква или пустая строка (""), то x приравнивается к нулю.

Выражениях IS UNKNOWN их IS NULL возвращают 1 (TRUE), еслихравен NULL, и 0 (FALSE) – в остальных случаях.

Например, запрос

SELECT 100 IS TRUE, 0 IS TRUE, \'2007-12-12\' IS TRUE, \'0000-00-00\' IS TRUE, NULL IS TRUE;

возвращает результат, представленный в табл. 3.3. Таблица 3.3. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Запрос

SELECT 100 IS FALSE, 0 IS FALSE, \'2007-12-12\' IS FALSE, \'0000-00-00\' IS FALSE, NULL IS FALSE;

возвращает результат, представленный в табл. 3.4. Таблица 3.4. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Запрос

SELECT 100 IS NULL, 0 IS NULL, \'2007-12-12\' IS NULL, \'0000-00-00\' IS NULL, NULL IS NULL;

возвращает результат, представленный в табл. 3.5. Таблица 3.5. Результат выполнения запроса MySQL 5.0. Библиотека программиста

...

Примечание

Если столбец определен как DATE NOT NULL (или DATETIME NOT NULL), то значение этого столбца, равное "0000-00-00" (или "0000-00-00 00:00:00"), рассматривается оператором IS NULL как NULL. Например, если при создании таблицы Orders (Заказы) (см. листинг 2.4 в главе 2) задать для столбца date (дата) свойство NOT NULL, то запрос SELECT * FROM Orders WHERE date IS NULL; выведет строки, в которых дата заказа равна "0000-00-00".

Следующие операторы проверяют несовпадение двух операндов.

Операторы x! = y, x <> y

Оператор "не равно" возвращает следующие значения:

• 1 (TRUE) – если х и y различны;

• 0 (FALSE) – если х и y совпадают;

• NULL – если по крайней мере один из операндов равен NULL.

Например, запрос

SELECT * FROM Customers WHERE name! = \'КРЫЛОВ\

возвращает результат, обратный приведенному в табл. 3.1, то есть все строки, кроме строк с фамилией "Крылов" (табл. 3.6). Таблица 3.6. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Следующие операторы проверяют несовпадение операнда с каким-либо логическим значением.

Оператор x IS NOT y, где y – TRUE, FALSE, UNKNOWN или NULL

Выражение х IS NOT TRUE возвращает 0 (FALSE), если х– отличное от нуля число или отличная от нулевой ("0000-00-00 00:00:00") дата и/или время, и 1 (TRUE) – в остальных случаях.

Выражением IS NOT FALSE возвращает 0 (FALSE), еслиxравен нулю, нулевой дате и/или времени, и 1 (TRUE) – в остальных случаях.

Выражениях IS NOT UNKNOWN их IS NOT NULL возвращают 0 (FALSE), если x равен NULL, и 1 (TRUE) – в остальных случаях.

Например, запрос

SELECT 100 IS NOT TRUE, 0 IS NOT TRUE,

\'2007-12-12\' IS NOT TRUE, \'0000-00-00\' IS NOT TRUE,

NULL IS NOT TRUE;

возвращает результат, представленный в табл. 3.7. Таблица 3.7. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Запрос

SELECT 100 IS NOT FALSE, 0 IS NOT FALSE,

\'2007-12-12\' IS NOT FALSE, \'0000-00-00\' IS NOT FALSE,

NULL IS NOT FALSE;

возвращает результат, представленный в табл. 3.8. Таблица 3.8. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Запрос

SELECT 100 IS NOT NULL, 0 IS NOT NULL,

\'2007-12-12\' IS NOT NULL, \'0000-00-00\' IS NOT NULL,

NULL IS NOT NULL;

возвращает результат, представленный в табл. 3.9. Таблица 3.9. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Как вы видите, операторы х IS NOT у и х IS у возвращают противоположные результаты.

Следующий оператор проверяет, меньше ли первый операнд, чем второй.

Оператор x < y

Оператор "меньше" возвращает следующие значения:

• 1 (TRUE) – если х меньше у;

• 0 (FALSE) – если х равен у или х больше у;

• NULL – если по крайней мере один из операндов равен NULL.

Например, запрос

SELECT * FROM Customers WHERE name<\'КРЫЛОВ\

возвращает пустой результат, поскольку "Крылов" – наименьшее в алфавитном порядке значение в столбце name (имя) таблицы Customers (Клиенты). Предшествующих ему значений в столбце нет, и, следовательно, ни одна строка не удовлетворяет условию отбора.

Следующий оператор проверяет, не превосходит ли первый операнд второго.

Оператор x < = y

Оператор "меньше либо равно" возвращает следующие значения:

• 1 (TRUE) – если х равно y или х меньше у;

• 0 (FALSE) – если х больше у;

• NULL – если по крайней мере один из операндов равен NULL.

Например, запрос

SELECT * FROM Customers WHERE name< = \'КРЫЛОВ\

возвращает результат, представленный в табл. 3.1.

Следующий оператор проверяет, больше ли первый операнд, чем второй.

Оператор x > y

Оператор "больше" возвращает следующие значения:

• 1 (TRUE) – если х больше у;

• 0 (FALSE) – если х равно у или х меньше у;

• NULL – если по крайней мере один из операндов равен NULL.

Например, запрос

SELECT * FROM Customers WHERE name>\'КРЫЛОВ\

возвращает результат, представленный в табл. 3.6.

Следующий оператор проверяет, является ли первый операнд большим либо равным по отношению ко второму.

Оператор x > = y

Оператор "больше либо равно" возвращает следующие значения:

• 1 (TRUE) – если х равно у или х больше у;

• 0 (FALSE) – если х меньше у;

• NULL – если по крайней мере один из операндов равен NULL.

Например, запрос

SELECT * FROM Customers WHERE name> = \'КРЫЛОВ\

возвращает все строки таблицы Customers (Клиенты) (табл. 3.10). Таблица 3.10. Результат выполнения запроса

MySQL 5.0. Библиотека программиста

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub