Sto desiderando di poter fare qualcosa di simile a quanto segue in SQl Server 2005 (che so non è valido) per la mia clausola where. A volte @teamID (passato in una stored procedure) sarà il valore di un teamID esistente, altrimenti sarà sempre zero e voglio tutte le righe dalla tabella Team.Operatore condizionale in SQL Dove clausola
Ho studiato utilizzando Case e l'operatore deve venire prima o dopo l'intera istruzione che mi impedisce di avere un operatore diverso in base al valore di @teamid. Qualsiasi suggerimento diverso dalla duplicazione delle mie dichiarazioni selezionate.
declare @teamid int
set @teamid = 0
Select Team.teamID From Team
case @teamid
when 0 then
WHERE Team.teamID > 0
else
WHERE Team.teamID = @teamid
end
Non credo che la complessità aggiuntiva di SQL dinamico o di due blocchi IF valga la pena, a meno che non si stia interrogando il database National Sport Association of China ;-) – Andomar
Ma il guadagno di prestazioni vale la complessità e la perdita di costi di manutenzione ? – tpdi
Tutte e tre le opzioni hanno i loro pro e contro - manca una parentesi nel suggerimento di Andomar, e le cose non funzioneranno come previsto. –