PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Por que null||null retorna um valor nulo, mas concat(null,null) retorna uma string vazia no postgres?


na função concat():
text concat(str "any",...)  Concatenate all arguments. NULL arguments are ignored.

Observação:os argumentos NULL são ignorados.

Imagina isto:

Os argumentos de entrada concat() são dinâmicos.

Então, quando escrevemos:concat('a',null,null,null,null) => escrevemos:concat('a')

(Ao contrário do || operador que NULL destruiu tudo)

em || operador:

Então NULL||NULL tem uma sintaxe errada

Mas por que não dar Error?Porque na operação concat, se não rejeitarmos o NULL (como a função concat), eles vão sobrecarregar tudo

SELECT NULL ||'aaa'||'bbb'||'ccc'||'ddd'

resultado:

NULL

mais informações :