MS Access - Přetypování textu na číslo

7. 4. 2014, Vladimír Klaus, přečteno 3152x

MS Access
SQL

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

Přetypování textu na číslo 1

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

Přetypování textu na číslo 2

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

Přetypování textu na číslo 3

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)

Přetypování textu na číslo 4

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.

Přetypování textu na číslo 5