PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Pourquoi null||null renvoie-t-il une valeur nulle alors que concat(null,null) renvoie une chaîne vide dans postgres ?

dans la fonction concat() :

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

Remarque :les arguments NULL sont ignorés.

Imaginez ceci :

Les arguments d'entrée concat() sont dynamiques.

Donc quand on écrit :concat('a',null,null,null,null) => nous avons écrit :concat('a')

(Par opposition au || opérateur qui NULL tout détruit)

en || opérateur :

Donc NULL||NULL a une mauvaise syntaxe

Mais pourquoi ne pas donner Error ? Parce que dans l'opération concat, si nous ne rejetons pas les NULL (comme la fonction concat), ils vont tout submerger

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

sortie :

NULL

plus d'informations :