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

Има ли причина да не се използва <=> (null safe =оператор) в mysql вместо =?

Поискахте примери от реалния свят. Ето един фалшив. Да приемем, че имате жилищна младежка програма или подобна и едно от изискванията е децата да споделят стая само с някой от същия пол. Имате поле M/F с нулеви стойности във вашата база данни - може да се нулира, защото подаването на данни е непълно (все още преследвате някои от данните). Вашият код за съвпадение на стаята определено не трябва да съвпада с учениците, където t1.Gender<=>t2 .Пол, защото може да се окаже съвпадение на две деца от неизвестен пол, които може да са от противоположни полове. Вместо това съпоставяте, където са равни, а не и двете нула.

Това е само един пример. Признавам, че поведението на NULL и = операторът причини много объркване през годините, но в крайна сметка грешката вероятно е в множеството онлайн уроци по MySQL, които не споменават как NULL взаимодейства с операторите, нито за съществуването на <=> оператор.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Незаконен микс от съпоставяния за операция „concat“

  2. Не мога да се свържа с локален MySQL сървър чрез сокет '/tmp/mysql.sock

  3. вмъкнете множество полета с помощта на цикъл foreach

  4. SQLSTATE[23000]:Нарушение на ограничението за целостта:1217

  5. sql как да комбинирате три заявки от две таблици в една заявка