07.04.2014, Vladimír Klaus, navštíveno 6165x
Přetypování textu na číslo se hodí v případě, že máme k dispozici číslo ve formě textu a potřebujeme s ním dále pracovat jako s číslem. Je tedy otázkou, zda jde jen o přetypování nebo už spíše o převod.
Jako příklad převodní funkce si ukážeme práci s CINT(). Ale pozor, funkce má obecnější použití, protože nejde jen o převod textu na celé číslo, ale nějakého výrazu na celé číslo. A tím výrazem může být třeba i reálné číslo, hodnota typu BOOL apod.
Vyjdeme z příkladu uvedeného v kapitole Přetypování čísla na text.
SELECT ID, Prijmeni, "ID: " & ID AS RazenoDle
FROM Zakaznici
ORDER BY "ID: " & ID
Třetí sloupec je textový, ale my z něj chceme dostat ID jako číslo a to ještě vynásobit 100. Ze třetího sloupce vezmeme znaky počínaje pátým a to převedeme na číslo. To už pak můžeme bez problému vynásobit.
SELECT ID, Prijmeni, "ID: " & ID AS RazenoDle,
100 * CINT(MID(RazenoDle, 5)) AS Nove
FROM Zakaznici
ORDER BY ID
Funkce umí také zaokrouhlovat, což si ukážeme například na stanovení poloviční částky v tabulce s objednávkami.
SELECT Castka, Castka/2 AS Polovina, CINT(Castka/2) AS Zaokrouhleno
FROM Objednavky
WHERE CASTKA > 1000
Zaokrouhlování funguje v MS Accessu trochu specificky, proto si ho vždy ověřte na dostatečném vzorku dat u vaší databáze. Pokud je desetinná část rovna 0,5, pak se vždy zaokrouhlí na nejbližší sudé číslo (1,5 -> 2, ale i 2,5 -> 2). Jinak se zaokrouhluje nahoru nebo dolů, podle toho zda je desetinná část větší nebo menší než 0,5. Vše si můžete ověřit na tomto velmi specifickém výběrovém dotazu (není tam zadána zdrojová tabulka).
SELECT CINT(1.5), CINT(2.5), CINT(2.49), CINT(2.51)
Z příkladu také vyplývá, že desetinná čísla se vždy zadávají s desetinnou tečkou – tedy bez ohledu na nastavení nebo národní zvyklosti. Jinak to končí takto „pěknou“ chybou – čárka slouží jako oddělovač jednotlivých argumentů funkce.