Esta es otra de esas cosas que he aprendido últimamente a fuerza de engullir una ingente cantidad de código.
Depurar o no depurar. Esa es la cuestión.
Estaba intentando comparar el valor de un parámetro de un procedimiento almacenado con el de la columna de una tabla, y resulta que la expresión fallaba a veces. Es por el tratamiento que se hace de los valores nulos al realizar una comparación.
Si alguno de los valores es nulo, cuando compare dicho valor con otro, aunque sea otro nulo, la expresión devuelve siempre false.
Parece ser que ocurre lo mismo con las cadenas. Una cadena vacía es siempre distinta de otra cadena vacía.
Esta expresión siempre devuelve False
Esta también
Esta otra también
Si coincide que ambos son nulos, esta expresión también devolverá False
Al final acabé con esta. Es una manera sencilla, aunque algo costosa, de comparar dos campos nullables.
Si comparo dos valores, por ejemplo columnas de una tabla, y ambos son nulos, obtendré Verdadero.
Versión de Oracle:
Crossposting from crisfervil.com
Tan difícil es poner, simplemente, … where valor1 is null and valor2 is null ???
Saludos
Vivaa el betis