2012-03-27 14 views

Respuesta

10
SELECT (COALESCE(ONE, 0) + COALESCE(TWO, 0)) FROM (TABLE) 

COALESCE devolverá el primer valor no nulo que se encuentra en los parámetros de izquierda a derecha. Así, cuando el primer campo es nulo, tomará el 0.

De esa manera, X2 dará lugar a 10 + 0 = 10

1

ya hay una buena respuesta, pero creo que vale la pena mencionar a la antonpug (en caso que él no sabe) que la razón por la que esto está sucediendo es que NULL no es un valor que se puede comparar o sumar.

NULL no es 0 o '' (cadena vacía), por lo que cada operación que implica NULL resultado nulo (NULL + 10 = NULL), incluso (NULL = NULL) evaluará como FALSE

+1

Soy consciente. ¡Gracias! – antonpug

+1

En Oracle, la cadena vacía es NULL. Esto difiere del estándar y otros RDBM. En Oracle 'seleccione 'verdadero' de dual donde '' es nulo' devuelve verdadero y' seleccione 'verdadero' de dual donde '' = '' 'no devuelve una fila. Debido a esto, el operador de concatenación '||' solo devolverá nulo si ambos lados son nulos. 'select null || '¡Hola mundo!' de dual' da la cadena "Hello World!". –

Cuestiones relacionadas