документація mysql

Оператори порівняння дають в результаті величину 1 (істина, TRUE), 0 (брехня, FALSE) або NULL. Ці функції працюють як з числами, так і з рядками. Рядки при необхідності автоматично перетворюються в числа, а числа - в рядки (як в Perl).

Операції порівняння в MySQL виконуються за такими правилами:

  • Якщо один або обидва аргументи - NULL. то і результат порівняння буде NULL. Справедливо для всіх операторів крім <=>.
  • Якщо обидва аргументи в операторі порівняння є рядками, то вони порівнюються як ланцюжки.
  • Якщо обидва аргументи - цілі числа, то вони порівнюються як цілі числа.
  • Шістнадцятиричні величини, якщо вони не порівнюються з числом, трактуються як рядки з двійковими даними.
  • Якщо один з аргументів є стовпець типу TIMESTAMP або DATETIME. а другий аргумент - константа, то константа перед виконанням порівняння перетвориться до типу TIMESTAMP. Це зроблено для кращої сумісності з ODBC.
  • У всіх інших випадках аргументи порівнюються як дійсні числа з плаваючою крапкою.

За замовчуванням порівняння рядків виробляється без урахування регістру символів з використанням поточного набору символів (за замовчуванням ISO-8859-1 Latin1, який, до того ж, прекрасно підходить для англійської мови).

Нижче наведені приклади, що ілюструють перетворення рядків у числа для операторів порівняння:

= Так само: <> != Не дорівнює: <= Меньше или равно: <Меньше чем:>= Більше або дорівнює:> Більше ніж: <=> NULL-безпечне порівняння (так само): IS NULL IS NOT NULL Тест для визначення, є величина дорівнює NULL чи ні: Для того, щоб MySQL добре працював з іншими програмами, забезпечується підтримка наступних додаткових можливостей для функції IS NULL.
  • Можна знайти останню вставлену рядок, використовуючи вираз: Це властивість можна блокувати установкою SQL_AUTO_IS_NULL = 0. See section 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 ), в котором все аргументы представлены одним и тем же типом данных. Способ выполнения сравнения определяется первым аргументом ( expr ):
  • Якщо expr є стовпець типу TIMESTAMP. DATE або DATETIME. а величини MIN () і MAX () є константами, то останні приводяться до того ж формату, що і стовпець.
  • Якщо expr є незалежним від регістру символів строковим виразом, то проводиться порівняння рядків без урахування регістру.
  • Якщо expr є залежним від регістру символів строковим виразом, то проводиться порівняння рядків з урахуванням регістру.
  • Якщо expr є цілочисельне вираз, то виконується порівняння цілих чисел.
  • У всіх інших випадках проводиться порівняння аргументів як дійсних чисел з плаваючою точкою.
expr NOT BETWEEN min AND max Те ж справедливо і для функції NOT (expr BETWEEN min AND max). expr IN (value.) Повертає 1. якщо вираз expr одно будь-якій величині зі списку IN. інакше - 0. Якщо все величини - константи, то вони оцінюються відповідно до типу виразу expr і упорядковано. Пошук елемента в цьому випадку проводиться методом логічного пошуку. Це означає, що функція IN є дуже швидкою, якщо список значень IN складається повністю з констант. Якщо expr є залежним від регістру строкових виразом, то порівняння рядків виробляється з урахуванням регістру: expr NOT IN (value.) Те ж справедливо і для функції NOT (expr IN (value.)). ISNULL (expr) Якщо expr одно NULL. то ISNULL () повертає 1. в іншому випадку - 0. Зверніть увагу: при порівнянні величин NULL з використанням оператора = завжди буде повертатися значення FALSE. COALESCE (list) Повертає перший в списку елемент зі значенням, не рівним NULL. INTERVAL (N, N1, N2, N3.) Повертає 0. якщо N Якщо залежна від регістру рядок порівнюється за допомогою будь-якого стандартного оператора (=, <>. але не LIKE), то кінцевий пробіл ігнорується.

Схожі статті