Avalados por :

Como o uso de campos NULL afeta as condições WHERE no SAP HANA SQL Script?

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

Olá especialista,

[1]

Selecione tab1."BUKRS", tab1."AMT", tab2."AMT" de tab1 left join tab2

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

O resultado é 1000 300 5000.

[2]

Mas, se o campo "ACCT", que é NULL , for adicionado à condição where, por exemplo,

Selecione tab1."BUKRS", tab1."AMT", tab2."AMT" de tab1 left join tab2

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


O resultado é 1000 300 NULL .

O valor de tab2."AMT"(5000) não é recuperado.

[3]

Então, minha pergunta é:

Campos que são NULL , não podem ser usados na condição where?

Obrigado.

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

3 Respuestas

0
Cargando...

Muito obrigado!

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

Olá,

Considero que deveria ser normal, já que null = null não é uma expressão válida.
Alternativamente, você pode modificar sua consulta da seguinte forma se desejar que seja exibida no resultado quando ambos forem 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));


Saudações,
Eason Chen

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

Olá Wei,

cada comparação com NULL sempre resulta no valor lógico UNKNOWN . Mas em condições de JOIN assim como em condições de WHERE , você precisa do valor lógico TRUE para que um registro seja considerado.

Em uma condição de WHERE , o predicado IS NULL é útil. Tenha em mente que: x = NULL não funciona, pois é uma comparação com NULL . Utilize x IS NULL no lugar.

Em uma condição de JOIN , você pode mapear NULL para um valor válido (por exemplo, a string vazia '') com a função 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>

Neste exemplo, tenha em mente que a string vazia também pode fazer parte dos seus dados. Nesse caso, escolha outro valor de substituição.

Atenciosamente,

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?