sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué null||null devuelve un valor nulo pero concat(null,null) devuelve una cadena vacía en postgres?

en la función concat():

text concat(str "any",...)  Concatenate all arguments. NULL arguments are ignored.

Nota:los argumentos NULL se ignoran.

Imagina esto:

Los argumentos de entrada concat() son dinámicos.

Así que cuando escribimos:concat('a',null,null,null,null) => hemos escrito:concat('a')

(A diferencia del || operador que NULL destruyó todo)

en || operador:

Entonces NULL||NULL tiene una sintaxis incorrecta

Pero ¿por qué no dar Error? Porque en la operación concat, si no rechazamos el NULL (Como la función concat), lo abrumarán todo

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

salida:

NULL

más información :