sql >> Database >  >> RDS >> PostgreSQL

Waarom retourneert null||null een null-waarde, maar concat(null,null) retourneert een lege string in postgres?

in concat() functie:

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

Opmerking:NULL-argumenten worden genegeerd.

Stel je dit eens voor:

De invoerargumenten concat() zijn dynamisch.

Dus als we schrijven:concat('a',null,null,null,null) => we hebben geschreven:concat('a')

(In tegenstelling tot de || operator die NULL alles vernietigd)

in || operator:

Dus NULL||NULL heeft een verkeerde syntaxis

Maar waarom zou u Error niet geven? Omdat in de concat-bewerking, als we de NULL niet verwerpen (zoals de concat-functie), ze alles zullen overweldigen

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

uitgang:

NULL

meer info :




  1. Kan geen getypte query maken voor een query met meer dan één retour met het resultaattype van de aanvraag

  2. Selecteer verklaring uit meerdere tabellen, met variabele invoer

  3. Krijg alle records van niveau 1 dat alleen een gespecificeerd aantal waarden heeft in niveau 2

  4. MySQL `FORCE INDEX` use cases?