11. januar 2007 - 16:21Der er
9 kommentarer og 1 løsning
Søging i records, dynamisk WHERE clause?
Når man fx skal kunne søge på fire kriterier i en tabel, så er det ofte at man kun skal søge på nogen af kriterierne.
Derfor ville det være brugbart hvis man fx kunne sige
SELECT X FROM X WHERE x = X IF(@kategoriid != -1) BEGIN AND kategoriid = @kategoriid END IF(@kategoriid != -1) BEGIN AND kategoriid = @kategoriid END IF(@kategoriid != -1) BEGIN AND kategoriid = @kategoriid END
Dette ville kunne gøre, at man kunne benytte én stored procedure til alle søgninger i en database og ikke skal oprette en stored procedure i databasen for hver kombination af søgekriterier.
Er der nogen måde hvorpå man rent faktisk kan gøre dette? Jeg bruger MS SQL 2000
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
DECLARE @SQL varchar(8000),@kategoriid int SET @kategoriid=1 SET @SQL='SELECT X FROM X WHERE 1=1 '
IF(@kategoriid != -1) BEGIN SET @SQL= @SQL +' AND kategoriid ='+CONVERT(Varchar(50), @kategoriid) END IF(@kategoriid != -1) BEGIN SET @SQL= @SQL +' AND kategoriid ='+CONVERT(Varchar(50), @kategoriid) END IF(@kategoriid != -1) BEGIN SET @SQL= @SQL +' AND kategoriid ='+CONVERT(Varchar(50), @kategoriid) END
SELECT * FROM Customers WHERE Cus_Name = COALESCE(@Cus_Name,Cus_Name) AND Cus_City = COALESCE(@Cus_City,Cus_City) AND Cus_Country = COALESCE(@Cus_Country,Cus_Country)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.