sql >> Database teknologi >  >> RDS >> Oracle

Brug ligesom '%' og match NULL-værdier med NUMBER kolonner

Det virker som om du gør livet svært for dig selv. Lad dem være nul, og gør derefter:

where (param1 is null or t.col1 like param1)
and (param2 is null or t.col2 like param2)

Hvis param1 (procedureargumentet; livet er enklere, når dine parameter-/variablenavne og kolonnenavne er forskellige... så jeg har ændret kolonnenavnene for at gøre det lidt klarere) er null det ignoreres grundlæggende* og alle rækker passerer den del af filteret, om kolonneværdien er null eller ej. Hvis param2 er ikke null, så er is null tjek for det fejler og kun rækker med (ikke-null) kolonneværdier, der matcher param2 værdi opfylder den del af filteret.

* Betingelser i en or kan evalueres i enhver rækkefølge; at sætte is null check first betyder ikke nødvendigvis like vil ikke blive evalueret - men optimizeren er ret smart omkring den slags ting



  1. En genvej til at opdatere en tabelrække i databasen?

  2. Oracle PLSQL indstiller en markør fra en variabel

  3. aktiv post summation i kodetænder

  4. Henvis til et alias andetsteds i SELECT-listen