Autor | Zpráva | ||
---|---|---|---|
leonek Profil |
#1 · Zasláno: 13. 8. 2014, 17:01:46
Dobrý den
Můžete mi pls překontrolovat následující část dotazu: WHERE hrom1 != '' OR hrom1 != '0' OR hrom1 is not null Bohužel mi to vyhodí i řádek s hodnotami (v tomto sloupci) 0 nebo prázdné. Dodnes mi to všude fungovalo... Děkuji za případnou pomoc. |
||
Taps Profil |
#2 · Zasláno: 13. 8. 2014, 17:18:26
leonek:
A co přesně potřebuješ ? |
||
Virtus Profil |
Zdravím,
místo OR použí AND. A tady příklad, který ti snad pomůžou pochopit co je na té podmínce špatně: mám tabulku(tab1) o jednom sloupci(hrom1) která obsahuje taková to data (první řádek je název sloupce): +-----+ |hrom1| +-----+ | NULL| +-----+ | | +-----+ | 0 | +-----+ OR , česky NEBO:
0 OR 1 = 1 true OR false = true pravda OR nepravda = pravda 0 OR 0 OR 1 = 1 Klauzule WHERE je v databázi aplikována vždy na jeden řádek, a to tím způsobem, že pokud je výsledkem podmínek pravda, tedy logická 1, řádek splňuje podmínku a je zařazen do výběru. Další věc, kterou je potřeba znát, jak se databáze chová k jednotlivým hodnotám v konkrétní podmínce: SELECT * FROM tab1 WHERE hrom1 IS NOT NULL +-----+ |hrom1| +-----+ | | +-----+ | 0 | +-----+ SELECT * FROM tab1 WHERE hrom1 != 0 SELECT * FROM tab1 WHERE hrom1 != NULL SELECT * FROM tab1 WHERE hrom1 NOT IN(NULL) SELECT * FROM tab1 WHERE hrom1 NOT IN(0) +-----+ |hrom1| +-----+ SELECT * FROM tab1 WHERE hrom1 != '' SELECT * FROM tab1 WHERE hrom1 NOT IN('') +-----+ |hrom1| +-----+ | 0 | +-----+ SELECT * FROM tab1 WHERE hrom1 != '0' +-----+ |hrom1| +-----+ | | +-----+ +-----+ |hrom1| +-----+ | NULL| [ (NULL != '') = log. 0, (NULL != '0') = log. 0, (NULL is not null) = log. 0 ] => 0 OR 0 OR 0 = 0, tento řádek nebude ve výsledku +-----+ | | [ ('' != '') = log. 0, ('' != '0') = log. 1, ('' is not null) = log. 1 ] => 0 OR 1 OR 1 = 1, tento řádek bude ve výsledku +-----+ | 0 | [ (0 != '') = log. 1, (0 != '0') = log. 0, ( 0 is not null) = log. 1 ] => 1 OR 0 OR 1 = 1, tento řádek bude ve výsledku +-----+ |
||
leonek Profil |
#4 · Zasláno: 14. 8. 2014, 09:49:24
Ano, funguje perfektně.
Pro mě nejdůležitější informace: „jakmile je jedna z hodnot logická 1 (pravda,true) je automaticky celý výraz vyhodnocen jako pravdivý.“ Děkuji Virtusi za velmi podrobnou odpověď... :) |
||
Časová prodleva: 10 let
|
0