В данной статье речь пойдет об операторах сравнения позволяющие сравнивать несколько велечин и логических операторах позволяющих создавать комбинированные условия используемые в основном для выборки данных из таблиц MySQL.
Оператор равенства ( <=> ) NULL-безопасное сравнение
Оператор ( IS ) или ( IS NOT )
Оператор меньше ( < ) или больше ( > )
Оператор меньше или равно ( <= ) или больше или равно ( >= )
Оператор между> ( BETWEEN a AND b ) или за пределами ( NOT BETWEEN a AND b )
Оператор содержится ( IN ) или не содержится ( NOT IN )
Оператор соответствие шаблону ( LIKE ) или не соответствует шаблоны ( NOT LIKE )
Оператор сравнение строк STRCMP(X, Y)
Оператор логическое или ( OR )
Оператор логическое исключающее или ( XOR )
Оператор логическое не ( NOT )
Операторы сравнения
Операторы сравнения используются для сравнения значения столбцов в таблицах, выражений, констант. Сравниваемые значения могут принадлежать различным типам данных. Результатом сравнения может быть - 1 (истина, TRUE), 0 (ложь, FALSE) или NULL.
NULL – неопределенное значение не принадлежащее не к одному типу данных, соответствует понятию ничего, это значение неравно нулю и неравно пустой строке. Сравнение любых значений с NULL выдаст результат NULL.
Оператор равенства ( = )
X = Y возвращает значения:
<p">TRUE – если X совпадает с Y.
FALSE – если X не совпадает с Y.
NULL – если один или два операнда равны NULL.
Пример:
SELECT * FROM testtable WHERE name1 = 'data';
Выбирает строки, в которых значение в столбце name1 равно data, при сравнении строк регистр символов не учитывается.
Оператор равенства ( <=> ) NULL-безопасное сравнение
X <=> Y возвращает значения:
TRUE – если X и Y равны NULL.
FALSE – если X или Y равен NULL.
Если X и Y не равны NULL, данный оператор возвращает значения идентичные оператору X = Y.
Оператор ( IS ) или ( IS NOT )
X IS TRUE возвращает значения:
TRUE – если X неравен нулю или нулевой дате.
FALSE – в остальных случаях.
X IS NOT TRUE возвращает значения:
FALSE - если X неравен нулю или нулевой дате.
TRUE – в остальных случаях.
X IS FALSE возвращает значения:
TRUE – если X равен нулю или нулевой дате.
FALSE – в остальных случаях.
X IS NOT FALSE возвращает значения:
FALSE – если X равен нулю, или нулевой дате.
TRUE – в остальных случаях.
X IS UNKNOWN или X IS NULL возвращает значения:
TRUE - если X равен NULL.
FALSE – в остальных случаях.
X IS NOT UNKNOWN или X IS NOT NULL возвращает значения:
FALSE - если X равен NULL.
TRUE – в остальных случаях.
Операторы IS и IS NOT в результате сравнения возвращают противоположные результаты.
Оператор не равно (X! = Y)
X <> Y - второй вариант записи X!=Y.
X! = Y возвращает значения:
TRUE – если X и Y не равны.
FALSE – если X и Y равны.
NULL – если X или Y равен NULL.
Оператор меньше ( < ) или больше ( > )
X < Y возвращает значения:
TRUE – если X меньше Y.
FALSE – если X равен Y или X больше Y.
NULL – если X или Y равен NULL.
X > Y возвращает значения:
TRUE – если X больше Y;
FALSE – если X равно Y или X меньше Y;
NULL – если X или Y равен NULL.
Оператор меньше или равно ( <= ) или больше или равно ( >= )
X <= Y возвращает значения:
TRUE – если X равно Y или X меньше Y.
FALSE – если X больше Y.
NULL – если X или Y равен NULL.
X >= Y возвращает значения:
<p">TRUE – если X равно Y или X больше Y.
FALSE – если X меньше Y.
NULL – если X или Y равен NULL.
Оператор между ( BETWEEN a AND b ) или за пределами ( NOT BETWEEN a AND b )
X BETWEEN a AND b возвращает значения:
TRUE – если a < X < b;
FALSE – если X меньше a или больше b;
NULL – в остальных случаях.
X NOT BETWEEN a AND b возвращает значения:
TRUE – если X меньше a или больше b;
FALSE – если a < X < b:
NULL – в остальных случаях.
Пример:
SELECT * FROM testtable WHERE id BETWEEN 80 AND 84; SELECT * FROM testtable WHERE id NOT BETWEEN 80 AND 84;
Первым запросом выбираются строки из таблицы testtable, в которых значение в столбце id лежит в диапазоне от 80 до 84. Вторым запросом выбираются все строки из таблицы testtable, кроме тех строк, значение которых в столбце id лежит в диапазоне от 80 до 84.
Оператор содержится ( IN ) или не содержится ( NOT IN )
X IN (N1, …, Nn) возвращает значения:
TRUE – если X совпадает с одним из элементов списка(N1, …, Nn).
FALSE – если X не совпадает ни с одним из элементов списка (N1, …, Nn).
NULL – если X равен NULL или когда в списке присутствует значение NULL и при этом X не совпадает ни с одним из элементов списка.
X NOT IN (N1, …, Nn) возвращает значения:
TRUE - если X не совпадает ни с одним из элементов списка.
FALSE – если X совпадает с одним из элементов списка.
NULL - если X равен NULL или когда в списке присутствует значение NULL и при этом X не совпадает ни с одним из элементов списка.
Пример:
SELECT * FROM testtable WHERE id IN (2, 5, 8); SELECT * FROM testtable WHERE id NOT IN (2, 5);
Первым запросом выбираются строки из таблицы testtable, в которых значение в столбце id равно 2, 5 и 8. Вторым запросом выбираются все строки из таблицы testtable, кроме тех строк, значение которых в столбце id равно 2 и 5.
Оператор соответствие шаблону ( LIKE ) или не соответствует шаблоны ( NOT LIKE )
X LIKE Y возвращает значения:
TRUE – если X соответствует шаблону.
FALSE – если X не соответствует шаблону.
NULL – если X или Y равен NULL.
X NOT LIKE Y возвращает значения:
FALSE – если X соответствует шаблону.
TRUE – если X не соответствует шаблону.
NULL – если X или Y равен NULL.
Можно использовать специальные подстановочные символы в шаблоне:
% – соответствует любой произвольной последовательности символов.
_ – соответствует одному произвольному символу.
Если эти символы надо использовать не как специальные подстановочные символы, а как обычные символы, перед ними нужно поставить символ обратной косой черты ( \% ), ( \_ ) а если хотим использовать символ обратной косой черты, то используем еще одну обратную косую черту (\\). Символы введенные заглавными и строчными буквами считаются одинаковыми, однако существует возможность различать эти символы, для этого используем BINARY LIKE и BINARY NOT LIKE.
Пример:
SELECT * FROM testtable WHERE id LIKE '%55%'; SELECT * FROM testtable WHERE id BINARY NOT LIKE '%kk%';
Первым запросом выбираются строки из таблицы testtable, в которых значение в столбце id содержит символы 55. Вторым запросом выбираются все строки из таблицы testtable, кроме тех строк, значение которых в столбце id содержит символы kk, причем символ k должен быть обязательно строчной буквой.
Оператор сравнение строк STRCMP(X, Y)
STRCMP (X, Y) возвращает:
– 1 – если X предшествует Y в алфавитном порядке.
0 – если X и Y совпадают.
1 – если X следует после Y в алфавитном порядке.
NULL – если X или Y равен NULL.
Логические операторы
На основе логических операторов можно построить сложные условие отбора с использованием операторов сравнения. Результатом работы логических операторов может быть - 1 (истина, TRUE), 0 (ложь, FALSE) или NULL.
Оператор логическое и ( AND )
&& - второй вариант записи AND.
X AND Y возвращает:
TRUE – если X и Y истинные значения.
FALSE – если (X или Y) или (X и Y) ложные значения.
NULL – в остальных случаях.
Пример:
SELECT * FROM testtale WHERE name1 = ‘A5’ AND name2 = ‘C8’;
Этим запросом выбираются строки из таблицы testtable, в которых значение в столбце name1 равно A5, а в столбце name2 равно С8.
Оператор логическое или ( OR )
|| – второй вариант записи OR .
X OR Y возвращает значения:
TRUE – если (X или Y) или (X и Y) истинные значения.
FALSE – если X и Y ложные значения.
NULL – в остальных случаях.
Пример:
SELECT * FROM testtale WHERE name1 = ‘A5’ OR name2 = ‘C8’;
Этим запросом выбираются строки из таблицы testtable, в которых значение в столбце name1 равно A5 или значение в столбце name2 равно С8.
Оператор логическое исключающее или ( XOR )
X XOR Y возвращает значения:
TRUE – если X истинное, а Y ложное или наоборот.
FALSE – если X и Y истинные значения, либо ложные.
NULL – если X или Y равен NULL.
Пример:
SELECT * FROM testable WHERE name1 = ’F5’ XOR name2 = ‘H7’;
Этот запрос выводит строки из таблицы testtable, в которых значение в столбце name1 равно F5 , и те строки значение в столбце name2 равно H7, не выводятся строки, в которых эти условия выполняются одновременно.
Оператор логическое не ( NOT )
! – второй вариант записи NOT.
>NOT X возвращает значения:
TRUE – если X ложное значение.
FALSE – если X истинное значение.
NULL – если X равен NULL.
Пример:
SELECT * FROM testable WHERE NOT name = 'G7';
Этим запросом выбираются все строки из таблицы testtable, за исключением строк в которых значение в столбце name равно G7.
На этом все. Всем пока.
Компонент комментариев CComment