Oracle
 sql >> база данни >  >> RDS >> Oracle

Използвайте като „%“ и съпоставете NULL стойности с NUMBER колони

Изглежда, че сам си правиш живота труден. Оставете ги нули, след което направете:

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

Ако param1 (аргументът на процедурата; животът е по-прост, когато имената на параметрите/променливите и имената на колоните са различни... така че промених имената на колоните, за да стане малко по-ясно) е null, основно се игнорира* и всички редове преминават тази част на филтъра, независимо дали стойността на колоната е нула или не е нула. Ако param2 е не null, тогава is null проверката за това е неуспешна и само редове с (не-нулеви) стойности на колона, които съответстват на param2 стойност отговаря на тази част от филтъра.

* Условия в or могат да бъдат оценени в произволен ред; поставянето на is null check first не означава непременно like няма да бъдат оценени - но оптимизаторът е доста умен за такива неща



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Променливи на Oracle

  2. Съвпадение на стойностите на дублирани колони на Oracle с помощта на Soundex, Jaro Winkler и Edit Distance (UTL_MATCH)

  3. Oracle 'Partition By' и 'Row_Number' ключова дума

  4. Oracle SQL как да групирате по, но да имате няколко реда, ако групата се повтори на по-късна дата

  5. Oracle SQL Select Matching Query