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
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.