2012. május 20., vasárnap

ISNULL vagy COALESCE

Két napja bukkantam egy érdekes cikkre az MSSQLTips-en, Aaron Bertrand-tól, amiben az ISNULL és a COALESCE viselkedését hasonlítja össze. Talán nem egy millió forintos kérdés, de hibakeresésnél, vagy milliszekundumokra kihegyezett lekérdezéseknél jól jöhet, érdemes elolvasni.

Akinek nincs ennyi ideje, vagy csak lusta :), azoknak hajtás utánra kanyarítottam egy összefoglalót.
  • A COALESCE különböző adattípusú argumentumok esetén az adattípusok elsőbbsége (data type precedence) alapján dönti el a visszaadott érték adattípusát. Az ISNULL ezzel szemben mindig az első argumentum adattípusát választja.
  • Ha számított oszlopot hozunk létre, akkor a COALESCE esetében az oszlop értéke lehet NULL (kivéve persze, ha a számított oszlop PERSISTED), ISNULL esetében viszont nem. 
  • A COALESCE kettőnél több argumentumot is kezel.
  • A COALESCE az ANSI SQL standard része (az ISNULL nem).
  • A COALESCE teljesítménye elmaradhat az ISNULL-tól abban az esetben, ha az argumentumok komplex kifejezések.

Nincsenek megjegyzések:

Megjegyzés küldése