sql >> Database teknologi >  >> RDS >> Sqlserver

Indlejret if-sætninger i SQL Server-lagret procedure SELECT-sætning

Til dette ville jeg prøve at gå med en mere formel Dynamic SQL-løsning, noget i stil med følgende, givet dine definerede inputparametre

DECLARE @SQL VARCHAR(MAX)

SET @SQL = '
SELECT

FROM
     database.dbo.table T
WHERE
     T.deleted = ''n'' '

--Do your conditional stuff here
IF @searchf1 <> '' THEN
    SET @SQL = @SQL + ' AND fieldf1 = ' + @searchf1 + ' AND fieldr1 = ' + @searchr1 + ''' '

--Finish the query
SET @SQL = @SQL + ' ORDER BY xxx'

EXEC(@SQL)

ANSVARSFRASKRIVELSE: Brugen af ​​Dynamic SQL er IKKE noget, der skal tages let på, og der bør tages passende hensyn under ALLE omstændigheder for at sikre, at du ikke er åben for SQL-injektionsangreb, men for nogle dynamiske søgetyper er det en af ​​de mest elegante rute.



  1. Vælg sidste 30 dage med en sql-forespørgsel

  2. Konvertering til datetime mislykkes kun på WHERE-klausulen?

  3. Kører markører i Django inde i den åbne transaktion?

  4. Hvordan regulært udtryk OR-operator evalueres