MySql (MariaDb) verzióváltás után ütköztem a következő problémába.
Egy int mezőt egy subselect segítségével töltök fel: mezo=(SELECT SUM(masikMezo) FROM ...)
A régi verzión ez rendben lefutott, de az új verzióban, ha egyetlen sor sem fele meg a subselect feltételének, úgy 0 helyett NULL értéket ad vissza. A NULL azonban nem tárolható a mezőben, csak 0. Az is lehet, hogy eddig is NULL-t adott vissza, de azt automatán 0-ra konvertálta.
A kérdés: hogyan tudom a NULL értékeket 0-ra konvertálni, hogy az UPDATE az új verzión is hibamentesen lefuthasson. Van valamilyen konfigurációs paramétere a MariaDb-nek, amit ez eléri? Vagy a subselectet lehetne picit módosítani, hogy NULL esetén 0 legyen?
- 404 megtekintés
Hozzászólások
mezo=(SELECT COALESCE(SUM(masikMezo), 0) FROM ...)
mondjuk
4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.
- A hozzászóláshoz be kell jelentkezni
Köszönöm, segített! :)
- A hozzászóláshoz be kell jelentkezni
+1
egyben ez kb. a legelegánsabb megoldás
- A hozzászóláshoz be kell jelentkezni
:) a legelegánsabb lenne, ha pgsql-ben lenne az egész, mert az az ilyen mókolásokat az alapjaiban eldobná :)
voltam po olyan projekten, ahol csak doctrine-nal kérdeztek le dolgokat. és nem értétték, hogy miért mindtam, hogy legalább kulcsokra figyeljenek
gondolkodást soha nem szabad megspórolni
4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.
- A hozzászóláshoz be kell jelentkezni
There are only 2 kinds of SQL developers:
* Those who know how COUNT() treats NULLs
* Those who don't
* Those who don't care
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Az a fura, hogy eddig működött.
https://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html#functi…
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#functi…
If there are no matching rows, or if expr
is NULL
, SUM()
returns NULL
.
Nagyon régóta NULL-t ad vissza a SUM().
- A hozzászóláshoz be kell jelentkezni
IFNULL()
- A hozzászóláshoz be kell jelentkezni