Autor | Zpráva | ||
---|---|---|---|
radozaj Profil |
#1 · Zasláno: 22. 4. 2009, 19:48:08
Ahoj, v PgSQL sa mi vyskytol takýto zádrheľ:
Máme tabuľku 3 čísel a chcem vždy vypísať najväčšie z nich. ------------------ | a | b | c | ================== | 98 | 100 | 34 | ------------------ | 12 | NULL | 10 | ------------------ | 12 | 8 | 10 | ------------------ Preto som použil niečo takéto: SELECT a,b,c, (CASE WHEN a > b THEN (CASE WHEN a > c THEN a ELSE c END) ELSE (CASE WHEN b > c THEN b ELSE c END) END) AS najvacsi FROM pokus; To je však chybné, 2. riadok nie je správny: ----------------------------- | a | b | c | najvacsi | ============================= | 98 | 100 | 34 | 100 | ----------------------------- | 12 | NULL | 10 | 10 | ----------------------------- | 12 | 8 | 10 | 12 | ----------------------------- |
||
Kajman_ Profil * |
SELECT a,b,c, GREATEST(a,b,c) AS najvacsi FROM pokus |
||
radozaj Profil |
#3 · Zasláno: 22. 4. 2009, 20:13:28 · Upravil/a: radozaj
Ale ta hodnota NULL robí problém aj funkcii least :(
Tiež to robí rovnako zle... EDIT: Vďaka, táto funkcia už funguje... :) A prečo ten môj SELECT vlastne neide? Je to spôsobené tou hodnotou NULL ? |
||
Kajman_ Profil * |
#4 · Zasláno: 22. 4. 2009, 20:25:17
Protože
12 > null vrátí false null > 10 vrátí false |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0