Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Use como '%' e combine valores NULL com NUMBER colunas


Parece que você está dificultando a vida para si mesmo. Deixe-os nulos e faça:
where (param1 is null or t.col1 like param1)
and (param2 is null or t.col2 like param2)

Se param1 (o argumento do procedimento; a vida é mais simples quando seus nomes de parâmetros/variáveis ​​e nomes de colunas são diferentes... do filtro, se o valor da coluna é nulo ou não nulo. Se param2 é não null então o is null verifique se há falha e apenas linhas com valores de coluna (não nulos) que correspondam a param2 valor atender a essa parte do filtro.

* Condições em um or podem ser avaliados em qualquer ordem; colocando o is null verificar primeiro não significa necessariamente o like não será avaliado - mas o otimizador é muito inteligente sobre esse tipo de coisa