É difícil dizer, pois deveria funcionar em todos os bancos de dados. Acho que ficaria com a tua primeira abordagem, mesmo que seja um pouco feia.
Avalados por :
HANA oferece tanto os operadores '=' como 'IS' para verificar a igualdade. Infelizmente, HANA só suporta 'IS' ao comparar com NULL (IS NULL).
Existe uma forma alternativa de adicionar um critério 'WHERE FieldA IS FieldB' com HANA?
Estou tentando evitar algo como:
WHERE (fieldA IS NULL and fieldB IS NOT NULL OR fieldA IS NOT NULL and fieldB IS NULL OR FieldA != FieldB)
É difícil dizer, pois deveria funcionar em todos os bancos de dados. Acho que ficaria com a tua primeira abordagem, mesmo que seja um pouco feia.
Olá David,
Qual seria a melhor maneira de comparar duas colunas levando em consideração os valores nulos? Preferencialmente algo que funcione nas visualizações de CDL.
IFNULL(DateFieldA, timestamp'1970-01-01 00:00:00') != IFNULL(DateFieldB, timestamp'1970-01-01 00:00:00')
Parece funcionar. Mas talvez existam opções melhores?
Olá Bart,
Um valor `null` em um banco de dados não é comparável, o que significa que cada operador de comparação retornará falso, exceto `nullField is null`.
Atenciosamente,
David
Em CAP Java , o operador CDS QL IS não tem a restrição mencionada anteriormente, mas pode comparar qualquer par de valores com semântica de comparação de dois valores.
Dado que o OData exige a comparação de dois valores, o CAP Java mapeia o operador OData eq para o operador CDS QL IS .
Como o HANA tem a restrição de que IS só pode comparar com NULL, no HANA a expressão CDS QL
a IS b
se expande para
(a = b AND a IS NOT NULL AND b IS NOT NULL) OR (a IS NULL AND b IS NULL)
Se a ou b são conhecidos como nulos ou não nulos, simplificações são aplicadas.
No SQLite, o operador IS pode ser aplicado a qualquer valor no lado direito e o CAP Java o utiliza em conformidade.
A forma padrão do SQL de comparar dois valores é na verdade
a IS NOT DISTINCT FROM b
o que infelizmente não é compatível com o HANA. O CAP Java utiliza essa tradução no PostgreSQL.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute