Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 4. 11. 2019 13:45:10

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 116

SQL dotaz na prázdnou položku - VYŘEŠENO

Mám databázovou tabulku (databáze plateb a dokladů) s položkami (pro zjednodušení) ID, částka, popis, odkaz, kde odkaz je textové pole s uvedeným odkazem na soubor (faktura vztahující se k hodnotě částka). Ne ke všem částkám je vyplněn údaj odkaz - tedy existují záznamy, ke kterým není přiřazena faktura. Potřebuji napsat SQL dotaz, který vyfiltruje záznamy - je faktura X není faktura.

Jedná se mi tedy o syntaxi dotazu, jak se zeptat, jestli je dané pole prázdné, nebo jestli obsahuje nějaký (libovolný) řetězec znaků. Jěco jako je NULL nebo NOT NULL, ale nedokážu přijít na správkou syntaxi.

Díky za radu

Editoval hdplot (5. 11. 2019 07:38:36)

Offline

#2 4. 11. 2019 15:20:56

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: SQL dotaz na prázdnou položku - VYŘEŠENO

Problém je asi v tom, že používáte Libre Office s motorem Firebird. Nemám s tím prakticky žádné zkušenosti, ale nápověda uvádí například toto Funkce je možné zadat také přímo do SQL dotazu. Syntaxe je: SELECT FUNKCE(sloupec) FROM tabulka..
     To by ve Vašem případě mělo být konkrétně SELECT ISNULL(odkaz) FROM tabulka. Klasický dotaz neumí vyhodnotit prázdné pole, ale SQL to umí ve verzi "IS NULL". Ovšem je k tomu podle všeho ještě podmínka, že to musíte filtrovat ze sloupce který je ALIAS(em) původního sloupce.


     Nevím jak to přímo souvisí s Firebirdem, ale dříve to šlo buď klasickým dotazem převést na SQL nebo to nešlo vůbec. To je podle mne správný postup. Tedy vytvořit alias na sloupec "odkaz" a nastavit SQL s ISNULL. Pokud se Vám to nepodaří pošlete mi vzor s několika málo údaji - ale tak aby všechna pole byla autentická ve smyslu formátu (včetně názvu kde hraje roli například velikost písma ap") a několik simulovaných případů. Pokusím se na to přijít, nebo udělat jiné řešení. Například místo "Empty" (=IS NULL) zadat skutečnou nulu což už je číslo které se dá vyhodnotit.


PS NOT IS NULL je funkce s významem "není prázdná", samotné "NULL" nic bez předpony neznamená. Správný dotaz je IS NULL tedy "je prázdné".

Editoval neutr (4. 11. 2019 15:26:30)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 4. 11. 2019 16:29:53

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: SQL dotaz na prázdnou položku - VYŘEŠENO

Neuvedl jste, o jakou db, resp, jaký dialekt sql používáte,

hledejte tedy něco jako

select *
from tabulka
where sloupec is empty

(pokud má být sloupec prázdný)

Offline

#4 5. 11. 2019 07:36:28

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 116

Re: SQL dotaz na prázdnou položku - VYŘEŠENO

Děkuji za radu už to funguje. Podstatné bylo to, co napsal neutr "samotné "NULL" nic bez předpony neznamená. Správný dotaz je IS NULL tedy "je prázdné"."


Takže celý dotaz pak vypadá následovně:


SELECT * FROM "Platby_A_Dokumenty" WHERE "Dokument" IS NULL


nebo pro variantu "není prázdné" pak takto


SELECT * FROM "Platby_A_Dokumenty" WHERE NOT "Dokument" IS NULL


PS - jen pro info, používám AOO, takže tato syntaxe platí i na této konfiguraci

Editoval hdplot (5. 11. 2019 07:38:07)

Offline

Zápatí