sql >> Database >  >> RDS >> Mysql

WHERE Als niet aan de voorwaarde wordt voldaan, haalt u alle waarden op, inclusief NULL

Wijzig in plaats daarvan uw toestand in deze:

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

Het idee is dat wanneer @LastName ='Alle', dan mag uw zoekopdracht geen filters hebben. De 1=1 voorwaarde zal altijd waar zijn, en samen met de andere controle moeten alle resultaten worden geretourneerd. Het andere pad dat de zoekopdracht kan volgen, is filteren op een specifieke achternaam, wat zeker null-waarden moet uitsluiten.

Update:DE 1=1 voorwaarde is overbodig. U kunt de voorwaarde herschrijven als:

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

Demo



  1. Hoe grote gegevens van mysql naar php ophalen?

  2. Beste manier om willekeurige rijen te selecteren PostgreSQL

  3. Oracle:Waarom ik niet op ROWNUM kan vertrouwen in een verwijderclausule?

  4. Hoe vind ik de MySQL my.cnf-locatie