Довідник з mysql
Оператори порівняння дають в результаті величину 1 (істина, TRUE), 0 (брехня, FALSE) або NULL. Ці функції працюють як з числами, так і з рядками. Рядки при необхідності автоматично перетворюються в числа, а числа - в рядки (як в Perl).
Операції порівняння в MySQL виконуються за такими правилами:
Якщо один або обидва аргументи - NULL. то і результат порівняння буде NULL. Справедливо для всіх операторів крім <=>.
Якщо обидва аргументи в операторі порівняння є рядками, то вони порівнюються як ланцюжки.
Якщо обидва аргументи - цілі числа, то вони порівнюються як цілі числа.
Шістнадцятиричні величини, якщо вони не порівнюються з числом, трактуються як рядки з двійковими даними.
Якщо один з аргументів є стовпець типу TIMESTAMP або DATETIME. а другий аргумент - константа, то константа перед виконанням порівняння перетвориться до типу TIMESTAMP. Це зроблено для кращої сумісності з ODBC.
У всіх інших випадках аргументи порівнюються як дійсні числа з плаваючою крапкою.
За замовчуванням порівняння рядків виробляється без урахування регістру символів з використанням поточного набору символів (за замовчуванням ISO-8859-1 Latin1, який, до того ж, прекрасно підходить для англійської мови).
Нижче наведені приклади, що ілюструють перетворення рядків у числа для операторів порівняння:
IS NULL. IS NOT NULL
Тест для визначення, є величина дорівнює NULL чи ні:
Для того, щоб MySQL добре працював з іншими програмами, забезпечується підтримка наступних додаткових можливостей для функції IS NULL.
Можна знайти останню вставлену рядок, використовуючи вираз:
Це властивість можна блокувати установкою SQL_AUTO_IS_NULL = 0. See Розділ 5.5.6, «Синтаксис команди SET».
Для даних типу NOT NULL DATE і стовпців DATETIME можна знайти особливу дату 0000-00-00. використовуючи вираз:
Це необхідно для роботи деяких додатків ODBC (так як ODBC не підтримує значення дати 0000-00-00).
expr BETWEEN min AND max
Якщо величина вираження expr більше або дорівнює заданому значенню min і менше або дорівнює заданому значенню max. то функція BETWEEN повертає 1. в іншому випадку - 0. Це еквівалентно висловом (min <= expr AND expr <= max ), в котором все аргументы представлены одним и тем же типом данных. В противном случае имеет место быть преобразование типов так, как сказано выше, но применительно ко всем трем аргументами. Внимание: до 4.0.5 аргументы приводились к типу expr.
expr NOT BETWEEN min AND max
Те ж справедливо і для функції NOT (expr BETWEEN min AND max).
Повертає 1. якщо вираз expr одно будь-якій величині зі списку IN. інакше - 0. Якщо все величини - константи, то вони оцінюються відповідно до типу виразу expr і упорядковано. Пошук елемента в цьому випадку проводиться методом логічного пошуку. Це означає, що функція IN є дуже швидкою, якщо список значень IN складається повністю з констант. Якщо expr є залежним від регістру строкових виразом, то порівняння рядків виробляється з урахуванням регістру:
Починаючи з 4.1 (відповідно до стандарту SQL-99), IN повертає NULL не тільки якщо вираз в лівій частині є NULL. але також якщо не знайдено збігається зі списком і один з виразів в списку є величиною NULL.
expr NOT IN (value.)
Те ж справедливо і для функції NOT (expr IN (value.)).
Якщо expr одно NULL. то ISNULL () повертає 1. в іншому випадку - 0.
Зверніть увагу: при порівнянні величин NULL з використанням оператора = завжди буде повертатися значення FALSE.
Повертає перший в списку елемент зі значенням, не рівним NULL.
Повертає 0. якщо N Якщо регістронезавісімого рядок порівнюється за допомогою будь-якого стандартного оператора (=, <>. але не LIKE), то кінцеві порожні символи (тобто прогалини, табуляції і переведення рядків) ігноруються: ігнорується.