31. marts 2005 - 10:11Der er
9 kommentarer og 1 løsning
If i min select sætting
Hej jeg sider og arbejder med et select sætting hvor jeg har brug for at test om en bit (@er_administratoter) er sand eller ej, min ide var select * from [tabel] where navn = [@et_eller_andet_navn] if @er_administratoter begin and id = [@et_eller_andet_id] and end
men andre ord jeg vil godt bruge lidt ala IsNull funktion, men skal bare kunne test på en variabel hvis sand så indsætte en anden variabel
SELECT Felt1, Felt2 ID = CASE @er_administratoter WHEN 1 THEN @Et_eller_andet_ID WHEN 0 THEN @Et_andet_ID ELSE NULL END, Felt4 FROM Tabel WHERE navn = @et_eller_andet_navn
Kan du ikke lave to statements, et statement der henter værdien, evt med CASE, og selve din SELECT bagefter? <- neeej jeg har en del ting som jeg tester på.
Men det eks. du skrev der laver jeg en "ny" kolonne og sætter den "case" værdi. Det var ikke lige det jeg ledte efter. Men så blever det nok over i at jeg skal ned i min where.
DECLARE @Er_admin bit set @Er_admin = 1
select hold_id, aktiveret = case @Er_Admin when 0 then 0 else null end from hold
i det her eks. der ville godt havde alle aktiveret hold med hvis Er_admin er sand
Select * from hold where If @Er_Admin = 0 Then Aktiveret = 1 End if If @Søg_Efter_Spil_Id = 1 Then Spil_Id = @Spil_Id End if If @Søg_Efter_Bogstav = 1 Then Hold_Navn like @Bogstav% End if
det nemmeste er da at lave to statements: således:
if @er_administratoter = 1 begin select * from [tabel] where navn = [@et_eller_andet_navn] and id = [@et_eller_andet_id] end if @er_administratoter = 0 begin select noget andet end
@Input_Hold_Navn varchar(50), @Input_Spil_Id int, @Input_Er_Admin bit
--- Søg efter --- set @Soeg_Efter_Hold_Navn = 0 set @Soeg_Efter_Spil_Id = 1
--- Input --- set @Input_Hold_Navn = 'M' set @Input_Spil_Id = 1 set @Input_Er_Admin = 0
if @Soeg_Efter_Hold_Navn = 1 Begin set @Hold_Navn = @Input_Hold_Navn End Else Begin set @Hold_Navn = null End
if @Soeg_Efter_Spil_Id = 1 Begin set @Spil_Id = @Input_Spil_Id End Else Begin set @Spil_Id = null End
if @Input_Er_Admin = 1 Begin set @Vis_Aktiveret = null End Else Begin set @Vis_Aktiveret = 1 End
select * from hold where Navn like IsNull('[' + @Hold_Navn + ']%','%[' + Navn + ']%') and Spil_Id = IsNull(@Spil_Id, Spil_Id) and Aktiveret = IsNull(@Vis_Aktiveret,Aktiveret)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.