Довідник з 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), то кінцеві порожні символи (тобто прогалини, табуляції і переведення рядків) ігноруються: ігнорується.