Sæt CONCAT_NULL_YIELDS_NULL i SQL Server

feature-sql1-618x350

Hvor ofte tænker vi på NULL-værdier, mens de sammenkobler NULL'er med strengværdier? Strengkoncentration med NULL-værdier kan give os nogle uventede resultater, hvis vi ikke er opmærksomme på CONCAT_NULL_YIELDS_NULL database SET-indstillinger.

CONCAT_NULL_YIELDS_NULL indstillinger kontrollerer, om sammenkædningsresultater skal behandles som NULL eller tomme strengværdier.

En vigtig note fra SQL Server Books Online

I en fremtidig version af SQL Server vil CONCAT_NULL_YIELDS_NULL altid være ON, og eventuelle programmer, der udtrykkeligt angiver valgmuligheden til OFF, vil generere en fejl. Undgå at bruge denne funktion i nyt udviklingsarbejde og planlægge at ændre applikationer, der i øjeblikket bruger denne funktion.

Syntaks

SET CONCAT_NULL_YIELDS_NULL {ON | AF } 

Beskrivelse

Indstil CONCAT_NULL_YIELDS_NULL ON

Når indstillingen CONCAT_NULL_YIELDS_NULL i ON, sammenkobling af en strengværdi med NULL, resulterer NULL som en output. Når vi har CONCAT_NULL_YIELDS_NULL som ON, betragtes NULL værdier som ukendt, og dermed sammenkædning af en strengværdi med UNKNOWN-udbytter i UNKNOWN, NULL som output.

Eksempel:

SET CONCAT_NULL_YIELDS_NULL ON; VÆLG 'tech-opskrifter' + NULL; - Resultater i NULL. 

CONCAT_NULL_YIELDS_NULL_ON

Sæt CONCAT_NULL_YIELDS_NULL OFF

Når indstillingen CONCAT_NULL_YIELDS_NULL i OFF, sammenkobling af en strengværdi med NULL, returnerer en streng som output. Når vi har CONCAT_NULL_YIELDS_NULL som OFF, betragtes NULL-værdier som en tom streng og derved slutter en strengværdi med tomme strengudbytter i en streng som output, fordi den betragtes som SAND i stedet for UNKNOWN.

Eksempel:

Sæt CONCAT_NULL_YIELDS_NULL OFF; VÆLG 'tech-opskrifter' + NULL; - Resultater i 'tech-opskrifter'. 

CONCAT_NULL_YIELDS_NULL_OFF

I fremtidige versioner af SQL Server bliver CONCAT_NULL_YIELDS_NULL-sæt indstillet. Derfor bør vi undgå at bruge det i fremtidigt udviklingsarbejde. Vi kan bruge ISNULL eller COALESCE funktion til at håndtere opførelsen af ​​NULL værdier under sammenkædning af strenge. Det er også tilrådeligt at bruge CONCAT funktion til concat strings introduceret med SQL Server 2012 udgave, der håndterer NULL værdier sammenkobling perfekt.

Brug funktionen CONCAT / ISNULL / COALESCE i stedet for CONCAT_NULL_YIELDS_NULL

Følgende eksempler skal følges, mens du skriver kode i stedet for at bruge CONCAT_NULL_YIELDS_NULL database muligheder, mens sammenkædning af strenge.

DECLARE @MyVar1 som VARCHAR (50) = 'Du er', @MyVar2 som VARCHAR (50) = NULL, @MyVar3 som VARCHAR (50) = 'på tech-recipes.com'; VÆLG KONCAT (@MyVar1, @MyVar2, @MyVar3);

CONCAT_NULL_Values_SQL_Server

I eksemplet ovenfor bruger vi CONCAT-funktionen introduceret med SQL Server 2012. Det vil behandle NULL i @MyVar2-variablen som en tom streng, mens sammenkædede strenge. Det er altid bedre at bruge denne funktion i stedet for at spille med CONCAT_NULL_YIELDS_NULL-sæt indstillingen for at undgå ændringer af kode, da denne indstilling bliver udskrevet.

DECLARE @MyVar1 som VARCHAR (50) = 'Du er', @MyVar2 som VARCHAR (50) = NULL, @MyVar3 som VARCHAR (50) = 'på tech-recipes.com'; VÆLG ISNULL (@MyVar1, '') + ISNULL (@MyVar2, '') + ISNULL (@MyVar3, '');

ISNULL_SQL_Server_Avoid_NULL

I eksemplet ovenfor bruger vi ISNULL-funktionen til at kontrollere og erstatte enhver NULL-forekomst med en tom streng i stedet for at bruge CONCAT_NULL_YIELDS_NULL-indstillingen. Vi kan også bruge ANSI-funktionen COALESCE i stedet for ISNULL.

Kilde

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.