Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Wayne
Člen
Avatar
Wayne:18.4.2017 18:45

Ahoj mohl by mi někdo poradit jak udělat, aby když proměnnou která je null aby se nepoužila v dotazu ve where podmínce jinak ano. Napadá mě jedině možnost napsat 2 stejný dotazy akorát s jinou podmínkou, ale toto řešení není úplně nejlepší myslím. Předem díky

 
Odpovědět
18.4.2017 18:45
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Wayne
gcx11:18.4.2017 19:13

Ahoj, myslím, že nějak takto:

SELECT * FROM Customers WHERE Age > 28 AND Name IS NOT NULL
 
Nahoru Odpovědět
18.4.2017 19:13
Avatar
Wayne
Člen
Avatar
Wayne:18.4.2017 19:30

Myslel jsem to spiše takto př.

SELECT * FROM Customers WHERE Age > @Vek

ale když by proměnná null tak by tento select neprošel a já chci udělat že když je proměnná null, tak ji v podmínce vůbec nepoužívat pokud null není tak ji v podmínce použít. Nějak takto

if(@Vek in not null)
Begin
SELECT * FROM Customers WHERE Age > @Vek
end
else
begin
SELECT * FROM Customers
end

Takhle by to šlo udělat ale když můj dotaz je na 25 řádků a 2x ho úplně stejně tak se mi to nezdá úplně nejlepší řešen, tak jestli někdo neví o jiné možnosti jak to lze lépe vyřešit

 
Nahoru Odpovědět
18.4.2017 19:30
Avatar
Odpovídá na Wayne
Neaktivní uživatel:18.4.2017 20:18
WHERE (@Vek IS NULL OR Age > @Vek)

Buď bude věk null, a tedy se vyberou všechny položky, nebo null nebude a tím se bude muset uplatnit ta podmínka.

Nahoru Odpovědět
18.4.2017 20:18
Neaktivní uživatelský účet
Avatar
Robert Poč
Člen
Avatar
Robert Poč:19.4.2017 10:56

/*Promenna pro sestaveni WHERE sekce*/
DECLARE @Podminka nvarchar(100)
SET @Podminka = ''

/*Pokud je nastaven nejaky vek vygeneruj WHERE sekci*/
IF (@Vek IS NOT NULL)
BEGIN
@Podminka = 'WHERE Age > ' + @Vek
END

/*Spust sestavene SQL*/
EXEC ('SELECT * FROM Customers ' + @Podminka)

 
Nahoru Odpovědět
19.4.2017 10:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.