Avalados por :

¿Cómo afecta el uso de campos NULL en las condiciones WHERE en SAP HANA SQL Script?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 10 Vistas
0
Cargando...

Hi expert,

[1]

select tab1."BUKRS", tab1."AMT", tab2."AMT" from tab1 left join tab2

on tab1."BUKRS" = tab2."BUKRS";

The result is 1000 300 5000.

[2]

But, if field "ACCT", which is NULL , is added to where condition, e.g,

select tab1."BUKRS", tab1."AMT", tab2."AMT" from tab1 left join tab2

on tab1."BUKRS" = tab2."BUKRS" and tab1."ACCT" = tab2."ACCT ";


The result is 1000 300 NULL .

The value of tab2."AMT"(5000) is not fetched.

[3]

So , my question is:

Fields which are NULL , can not be used in where condition ?

Tks.

image.png
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

¡Muchas gracias!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Considero que debería ser normal, ya que null = null no es una expresión válida.
Alternativamente, puedes modificar tu consulta de la siguiente manera si deseas que se muestre en el resultado cuando ambos sean nulos.
select tab1."BUKRS", tab1."AMT", tab2."AMT" from tab1 left join tab2 on tab1."BUKRS" = tab2."BUKRS" and (tab1."ACCT" = tab2."ACCT" or (tab1."ACCT" IS NULL and tab2."ACCT" is NULL));


Saludos cordiales,
Eason Chen

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Wei,

cada comparación con NULL siempre resulta en el valor lógico UNKNOWN . Pero en condiciones de JOIN así como en condiciones de WHERE , necesitas el valor lógico TRUE para que un registro sea considerado.

En una condición de WHERE , el predicado IS NULL es útil. Ten en cuenta que: x = NULL no funciona, porque es una comparación con NULL . Utiliza x IS NULL en su lugar.

En una condición de JOIN , puedes mapear NULL a un valor válido (por ejemplo, la cadena vacía '') con la función SQL IFNULL( ) :

select tab1."BUKRS", 
       tab1."AMT", 
       tab2."AMT" 
  from tab1 
  left join tab2
    on tab1."BUKRS" = tab2."BUKRS" 
   and IFNULL(tab1."ACCT", '') = IFNULL(tab2."ACCT", '');<br>

En este ejemplo, debes tener en cuenta que la cadena vacía también podría formar parte de tus datos. En este caso, debes elegir otro valor de reemplazo.

Saludos cordiales,

Jörg

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?