08.07.2014, Vladimír Klaus, navštíveno 5353x
Mezi dalšími funkcemi nesmí chybět ani ty základní aritmetické. Začneme tím nejjednodušším – sčítáním. I když na sčítání se dá dívat jako na opravdové sčítání čísel, nebo na spojování textů, případně kombinaci obojího.
Pokud máme dva texty, můžeme je opravdu velice snadno sečíst.
SELECT "Název: " + Nazev FROM Produkty
Dále je možné řetězce spojit pomocí „&“, což je někdy dokonce nutnost. Tím případem je, když sčítáme text a číslo.
SELECT "Cena: " & Cena & "Kč" FROM Produkty
V jiných databázích je sčítání vyhrazeno opravdu jen na sčítání čísel, a pokud potřebujete spojit textové řetězce, pak k tomu slouží dvě svislítka - ||.
SELECT "Název: " || Nazev FROM Produkty
A aby toho nebylo málo, tak třeba pro SQL Server nebo MySQL se používá spojovací funkce CONCAT().
SELECT CONCAT('Název: ', Nazev) FROM Produkty
Odčítání, násobení a dělení textů je pochopitelně nesmysl, takže pro tyto operace mají význam už jen čísla. I když u nich zase můžete bojovat s rozsahem nebo přesností. V následujícím příkladu si ukážeme, jak může malá přesnost ovlivnit výpočty.
Nejprve použijeme tabulku Aritmetika a naplníme její sloupce jednou sedminou z Částky. Máme tam tedy sloupce s jednoduchou přesností, s dvojitou přesností a pak také typu Měna.
UPDATE Aritmetika SET UdajJednoduchy=Castka/7, UdajDvojity=Castka/7,
UdajMena=Castka/7
Nyní se pokusíme dostat zpět na výchozí částku a hned vidíte, jak jednoduchá přesnost výsledek ovlivnila.
SELECT Castka, UdajJednoduchy*7, UdajDvojity*7, UdajMena*7
FROM Aritmetika
V tomto případě to nevadí, částku můžeme v pohodě zaokrouhlit na dvě desetinná místa, ale v případě nějakých technických výpočtů by to už byl docela velký problém.
SELECT Castka, ROUND(UdajJednoduchy*7, 2), UdajDvojity*7
FROM Aritmetika
Z obrázku dále vyplývá, že ani údaj typu Měna nemusí být žádná výhra. Tento typ ukládá čísla pouze s přesností na 4 desetinná místa, což je dost pro údaj jako takový, ale vůbec to nemusí stačit, pokud byste prováděli nějaké výpočty. Výsledek bude ještě méně přesný než při použití údaje s jednoduchou přesností, jenže Access to před vámi skryje – vidět je to pouze při úpravě hodnoty – na obrázku v poli s údajem 799,0003.
A na závěr ještě malý praktický příklad. Předpokládejme, že máte v tabulce s produkty uvedené ceny s DPH a ono došlo ke změně sazby – z 20 % na 21 %. Jak provést změnu cen? Pozor – tento příkaz můžete spustit jen jednou, proto bych doporučoval nejprve provést pracovní výběr.
SELECT Cena, ROUND(Cena/1.20*1.21, 2) AS NovaCena FROM Produkty
Ono totiž zjistíte, že nové ceny jsou dost ošklivé a bude lepší je nastavit ručně na nové hodnoty a zpětně z nich odvodit případnou cenu bez DPH. Ale když vám to nevadí, tak pak takto aktualizujte údaje v tabulce.
UPDATE Produkty SET Cena=ROUND(Cena/1.20*1.21, 2)