Cita:
Empezado por guillotmarc
Hola.
En realidad es muy común, pero solo ha comentado una parte del filtro que debe usar realmente.
Se utiliza muchísimo para consultas del tipo :
select *
from CLIENTES
where (:APELLIDOS is null or APELLIDOS = :APELLIDOS) and (:TELEFONO is null or TELEFONO = :TELEFONO)
Es decir, diseñamos una consulta a un tabla por varios posibles parámetros, pero podemos dejar el parámetro a Null si en un momento dado no queremos filtrar por él.
Creo que en el último Firebird 2.5 ya es capaz de reconocer el tipo de los parámetros en esta estructura, pero en las versiones anteriores es cuando hay que hacer un CAST con el tipo.
Saludos.
|
Pues la verdad nunca me he cruzado con algo como esto.
Y bueno, la forma en como
gluglu puso su ejemplo inicial, hizo que yo expusiera mis argumentos anteriores.
Y aún así, acabo de hacer una prueba con una tabla de un sistema que estoy haciendo y dos consultas
SQL:
Código SQL
[-]
select * from tabla
where cast(:id as integer) is not null and id = :id and tipo = 0
select * tabla
where id = :id and tipomov = 0
A ambas consultas les pasé como valor del parámetro un valor
x y
NULL y el resultado en ambas fue exactamente el mismo, o sea, que según esto, el hacer
:id is not null (o
:id is null) no afectó en el resultado.
Saludos...