sql >> Database teknologi >  >> RDS >> Mysql

WHERE Hvis betingelsen ikke er opfyldt, fås alle værdier inklusive NULL

Skift din tilstand til denne i stedet:

where (@LastName = 'All' and 1=1) or (LastName = @LastName)

Tanken er, at når @LastName ='Alle', så skal din forespørgsel ikke have nogen filtre. Betingelsen 1=1 vil altid være sand, og sammen med den anden kontrol bør alle resultater returneres. Den anden sti, som forespørgslen kan tage, er filtrering efter et specifikt efternavn, som absolut bør udelukke null-værdier.

Opdatering:1=1 betingelsen er overflødig. Du kan omskrive betingelsen som:

where (@LastName = 'All') or (LastName = @LastName)

Demo



  1. Kortlæg en lillebitte som boolesk dvale

  2. Bind 3 tabeller i 2 forskellige tilfælde i MySQL

  3. MySQL Vælg kun de overflødige rækker og udelad de originale rækker

  4. MemSQL - Surrogatnøgle som Primær og forskellige unikke nøgler på samme tid i tabeloprettelse