sql >> Database teknologi >  >> RDS >> Sqlserver

Ret "Mindst et af argumenterne til COALESCE skal være et udtryk, der ikke er NULL-konstanten" i SQL Server

I SQL Server, hvis du får fejlmeddelelsen Msg 4127, der lyder "Mindst et af argumenterne til COALESCE skal være et udtryk, der ikke er NULL-konstanten", er det sandsynligvis fordi alle dine argumenter til COALESCE() udtryk er NULL konstant.

For at løse dette problem skal du sørge for, at mindst ét ​​argument ikke er NULL konstant.

Eksempel på fejl

Her er et eksempel på kode, der producerer denne fejl:

SELECT COALESCE( null, null );

Vi får dette:

Msg 4127, Level 16, State 1, Line 1
At least one of the arguments to COALESCE must be an expression that is not the NULL constant.

I dette tilfælde var alle argumenter NULL konstant, og derfor blev der returneret en fejl.

Løsning

Løsningen er nem. Det eneste, vi skal gøre, er at sikre, at mindst ét ​​argument ikke er NULL konstant:

SELECT COALESCE(null, 'Cat', 'Dog');

Resultat:

Cat

I dette tilfælde Cat var den første ikke-NULL argument, og så COALESCE() returnerede den værdi.

Som det ses her, er det OK at inkludere NULL konstant som et argument, så længe der også er mindst ét ​​andet argument, der ikke er NULL konstant.

NULL Udtryk og databasekolonner

Bemærk, at NULL konstant er ikke det samme som et udtryk, der resulterer i NULL . Og det er ikke det samme som en databasekolonne, der indeholder NULL .

For eksempel, hvis alle argumenter refererer til databasekolonner, og disse databasekolonner er NULL , så får vi ikke fejlen.

Antag, at vi kører følgende forespørgsel:

SELECT CustomerId, CustomerCategoryId
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

Resultat:

CustomerId  CustomerCategoryId
----------- ------------------
NULL        NULL

Begge kolonner indeholder NULL værdier.

Så hvis vi sender begge kolonner til COALESCE() , får vi et resultat af NULL :

SELECT COALESCE( CustomerId, CustomerCategoryId )
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

Resultat:

NULL

Det samme gælder, hvis vi erstatter en af ​​kolonnerne med NULL konstant:

SELECT COALESCE( CustomerId, null )
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

Resultat:

NULL

Så det er kun, når alle argumenter er NULL konstant, at vi får en fejl.


  1. Hvad er PLSQL-poster i Oracle

  2. Brug af aggregerede funktioner (SUM, AVG, MAX, MIN, COUNT, DISTINCT) i MySQL

  3. Hvordan kan jeg importere en .sql-fil til min Heroku postgres-database?

  4. Sådan fungerer UNHEX() i MariaDB