sql >> Databáze >  >> RDS >> Oracle

Použijte jako '%' a přiřaďte hodnoty NULL k NUMBER sloupcům

Zdá se, že si tím ztěžujete život. Nechte je null, pak proveďte:

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

Pokud param1 (argument procedury; život je jednodušší, když se vaše názvy parametrů/proměnných a názvy sloupců liší... takže jsem názvy sloupců změnil, aby to bylo trochu jasnější) je null, v podstatě se ignoruje* a všechny řádky tuto část předají filtru, zda je hodnota sloupce null nebo ne null. Pokud param2 není null, pak is null kontrola selže a pouze řádky s hodnotami sloupce (není null), které odpovídají param2 hodnotu splňující tuto část filtru.

* Podmínky v or lze hodnotit v libovolném pořadí; zadáním is null check first nemusí nutně znamenat like nebudou hodnoceny – ale optimalizátor je na takové věci docela chytrý



  1. Jak se mohu chránit před útoky SQL injection pomocí Perl's DBI?

  2. Třídění pole PHP do sloupců

  3. Vložte neznámý počet řádků do MySQL pomocí PHP

  4. Doporučené postupy pro délku sloupce varchar SQL