Jak zjistit jestli je číslo sudé nebo liché?
Lze využít jednoduchou fintu s početní operací MODULO, která vrací zbytek po dělení. Jednoduše tedy zjistíme modulo po dělení dvěma a pokud je výsledek 0 tak je číslo sudé a pokud ne tak liché.
V SQL se modulo zjišťuje takto:
DECLARE @Cislo numeric(16,0)
SET @Cislo = 17
SELECT @Cislo % 2 AS Modulo2, @Cislo % 3 AS Modulo3
První číslo zobrazuje modulo po dělení 2 a druhé po dělení 3
Jak tedy zjistit sudou nebo lichou?
DECLARE @Cislo numeric(16,0)
SET @Cislo = 17
IF
(SELECT @Cislo % 2) = 0
SELECT 'SUDA'
ELSE
SELECT 'LICHA'
výsledek:
A ještě jeden případ. Tímto skriptem vytvářím zálohy databáze každou hodinu, přičemž chci mít vždy 2 zálohy, sudou a lichou podle času-hodiny. Samozřejmě lze skript vylepšit a zálohu více parametrizovat, ale o tom jindy
IF
(SELECT DATEPART(hour,GETDATE()) % 2) = 0
BEGIN
BACKUP DATABASE [NazevDB]
TO DISK=N'D:\DB_Backup\hodinova\NazevDB-suda.bak'
WITH INIT
END
ELSE
BEGIN
BACKUP DATABASE [NazevDB]
TO DISK=N'D:\DB_Backup\hodinova\NazevDB-licha.bak'
WITH INIT
END