sql >> Databasteknik >  >> RDS >> Mysql

Vad är skillnaden mellan ifnull och coalesce i mysql?

Den största skillnaden mellan de två är att IFNULL funktion tar två argument och returnerar det första om det inte är NULL eller den andra om den första är NULL .

COALESCE funktion kan ta två eller flera parametrar och returnerar den första icke-NULL-parametern, eller NULL om alla parametrar är null, till exempel:

SELECT IFNULL('some value', 'some other value');
-> returns 'some value'

SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'

SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function

SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'

SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'

UPPDATERING: MSSQL utför strängare typ- och parameterkontroll. Dessutom har den inte IFNULL funktion utan istället ISNULL funktion, som behöver känna till typerna av argument. Därför:

SELECT ISNULL(NULL, NULL);
-> results in an error

SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL

Även COALESCE funktion i MSSQL kräver att minst en parameter är icke-null, därför:

SELECT COALESCE(NULL, NULL, NULL, NULL, NULL);
-> results in an error

SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'


  1. ST_DWithin tar parameter som grad, inte meter, varför?

  2. Lägga till en frågetips när du anropar tabellvärderad funktion

  3. Jämför arrayer för likhet, ignorera ordningen av element

  4. Databasversionskontroll för MySQL