Mysql
 sql >> база данни >  >> RDS >> Mysql

Какъв е този оператор <=> в MySQL?

TL;DR

Това е NULL безопасно равно оператор.

Като обикновения = оператор, две стойности се сравняват и резултатът е или 0 (не е равно) или 1 (равно); с други думи:'a' <=> 'b' дава 0 и 'a' <=> 'a' дава 1 .

За разлика от обикновения = оператор, стойности на NULL нямат специално значение и така никога не дава NULL като възможен резултат; така че:'a' <=> NULL дава 0 и NULL <=> NULL дава 1 .

Полезност

Това може да бъде полезно, когато и двата операнда могат да съдържат NULL и имате нужда от последователен резултат за сравнение между две колони.

Друг случай на употреба е с подготвени изрази, например:

... WHERE col_a <=> ? ...

Тук заместителят може да бъде скаларна стойност или NULL без да се налага да променяте нищо относно заявката.

Свързани оператори

Освен <=> има и два други оператора, които могат да се използват за сравнение с NULL , а именно IS NULL и IS NOT NULL; те са част от стандарта ANSI и следователно се поддържат в други бази данни, за разлика от <=> , което е специфично за MySQL.

Можете да ги мислите като специализации на <=> на MySQL :

'a' IS NULL     ==> 'a' <=> NULL
'a' IS NOT NULL ==> NOT('a' <=> NULL)

Въз основа на това вашата конкретна заявка (фрагмент) може да бъде преобразувана в по-преносима:

WHERE p.name IS NULL

Поддръжка

Стандартът SQL:2003 въведе предикат за това, който работи точно като <=> на MySQL оператор в следната форма:

IS [NOT] DISTINCT FROM 

Следното е универсално поддържано, но е относително сложно:

CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
     THEN 1
     ELSE 0
END = 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирам MySQLdb (библиотека за достъп до данни на Python към MySQL) на Mac OS X?

  2. SQL заявка за изтриване на база данни в MySQL

  3. Как мога да намеря всички таблици в MySQL с конкретни имена на колони в тях?

  4. Функция MySQL LOG() – Връща естествения логаритъм на стойност

  5. Как MySQL обработва ORDER BY и LIMIT в заявка?