| 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: 12 let
|
|||
0