Oracle: Comparando Valores Nulos

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.

 

image

Esta expresión siempre devuelve False

 

 

 

 

image

Esta también

 

image

Esta otra también

 

image

Si coincide que ambos son nulos, esta expresión también devolverá False

 

image

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:

image

Crossposting from crisfervil.com

No es lo mismo

Pensaba yo que ordenar cadenas era lo mismo aquí que en la china, pero hete aquí que no.

Oracle y .net no ordenan igual.

Esto lo he descubierto por uno de esos errores que te hacen ir a casa harto de mirar código.

Cómo lo ordenaría .net

image

Resultado:

image

Cómo ordenaría Oracle la misma secuencia

image

Resultado:

image

Oracle .Net
A 0
a 1
AA a
AW A
Z AA
z AW
0 z
1 Z

 

Versión de Oracle:

image

 

Nunca te acostarás sin aprender una cosa más.

Si es que… mirar código es aburridísimo… pero si miras bien, siempre acabas encontrando algo.

Crossposting from crisfervil.com