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