sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man ersätter en sträng om posten är NULL i T-SQL

Du kan använda COALESCE eller ISNULL . Den förra är standard och returnerar den första NOT NULL argument (eller NULL om alla argument är NULL )

SELECT COALESCE(micv.value,'Pending') as value

ISNULL är begränsad till endast 2 argument men är effektivare i SQL Server om det första värdet som ska testas är dyrt att utvärdera (t.ex. en underfråga).

En potentiell "gotcha" med ISNULL att vara medveten om är att den returnerar datatypen för den första parametern så om strängen som ska ersättas är längre än kolumndatatypen skulle tillåta kommer du att behöva en cast.

T.ex.

CREATE TABLE T(C VARCHAR(3) NULL);

INSERT T VALUES (NULL);

SELECT ISNULL(C,'Unknown')
FROM T

Skulle returnera Unk

Men ISNULL(CAST(C as VARCHAR(7)),'Unknown') eller COALESCE skulle båda fungera som önskat.



  1. Hur hittar jag de frågor som blockerar en annan fråga?

  2. Lägg till en unik begränsning för kombinationen av två kolumner

  3. Varför infoga-välj till variabeltabell från XML-variabel så långsam?

  4. yii-relation för främmande nycklar med flera kolumner