feature-sql1-618x350-618x350

Itakda ang CONCAT_NULL_YIELDS_NULL sa SQL Server

tampok-sql1-618x350

Gaano kadalas namin iniisip ang mga halaga ng NULL habang pagdugtungin ang mga NULL na may mga halaga ng string? Ang konsentrasyon ng string na may NULL na mga halaga ay maaaring magbigay sa amin ng ilang hindi inaasahang mga resulta kung hindi namin alam ang CONCAT_NULL_YIELDS_NULL database SET na mga opsyon.

CONCAT_NULL_YIELDS_NULL ang mga opsyon na kontrolin kung ang mga resulta ng pagdudugtong ay dapat gamutin bilang NULL o walang laman na mga halaga ng string.

Isang Mahalagang Tala mula sa Mga Online na SQL Server Books

Sa isang hinaharap na bersyon ng SQL Server, CONCAT_NULL_YIELDS_NULL ay palaging magiging ON, at ang anumang mga application na malinaw na itinakda ang pagpipiliang OFF ay bubuo ng isang error. Iwasan ang paggamit ng tampok na ito sa bagong trabaho sa pag-unlad, at planuhin na baguhin ang mga application na kasalukuyang gumagamit ng tampok na ito.

palaugnayan

Itakda ang CONCAT_NULL_YIELDS_NULL {ON | OFF} 

paglalarawan

Itakda ang CONCAT_NULL_YIELDS_NULL SA

Kapag ang CONCAT_NULL_YIELDS_NULL database na opsyon sa ON, concatenating isang string na halaga sa NULL ay magreresulta sa NULL bilang isang output. Kapag kami ay may CONCAT_NULL_YIELDS_NULL bilang ON, pagkatapos NULL halaga ay isinasaalang-alang bilang UNKNOWN, samakatuwid concatenating isang string halaga na may UNKNOWN magbubunga sa UNKNOWN, null bilang output.

Halimbawa:

I-set ang CONCAT_NULL_YIELDS_NULL ON; PUMILI 'tech-recipes' + null; - Mga pagsisiyasat sa NULL. 

CONCAT_NULL_YIELDS_NULL_ON

I-set OFF ang CONCAT_NULL_YIELDS_NULL

Kapag ang opsyon ng database ng CONCAT_NULL_YIELDS_NULL sa OFF, ang pagdaragdag ng isang string na halaga sa null ay babalik ng isang string bilang output. Kapag kami ay may CONCAT_NULL_YIELDS_NULL bilang OFF, NULL mga halaga ay itinuturing bilang isang walang laman na string, kaya concatenating isang string halaga sa walang laman na mga magbubunga ng string sa isang string bilang output dahil ito ay itinuturing bilang TRUE sa halip ng UNKNOWN.

Halimbawa:

I-set OFF ang CONCAT_NULL_YIELDS_NULL; PUMILI 'tech-recipes' + null; - Mga impresyon sa 'tech-recipes'. 

CONCAT_NULL_YIELDS_NULL_OFF

Sa mga bersyon sa hinaharap ng SQL Server, ang opsyon na set ng CONCAT_NULL_YIELDS_NULL ay aalisin. Samakatuwid, dapat nating iwasan ang paggamit nito sa pag-unlad sa hinaharap. Maaari naming gamitin ang ISNULL o COALESCE gumana upang mahawakan ang pag-uugali ng mga halaga ng NULL habang nagtatatag ng mga string. Maipapayo rin na gamitin CONCAT function sa concat string na ipinakilala sa SQL Server 2012 edisyon na humahawak NULL mga halaga ng pagdudugtong perpektong.

Gamitin ang CONCAT / ISNULL / COALESCE Function Sa halip ng CONCAT_NULL_YIELDS_NULL

Dapat sundin ang mga sumusunod na halimbawa habang nagsusulat ng code sa halip na gumamit ng mga opsyon sa database ng CONCAT_NULL_YIELDS_NULL habang nagtataglay ng mga string.

Ipahayag ang @ MyVar1 bilang VARCHAR (50) = 'Ikaw ay', @ MyVar2 bilang VARCHAR (50) = NULL, @ MyVar3 bilang VARCHAR (50) = 'sa tech-recipes.com'; PUMILI NA CONCAT (@MyVar1, @MyVar2, @ MyVar3);

CONCAT_NULL_Values_SQL_Server

Sa halimbawa sa itaas, ginagamit namin ang function ng CONCAT na ipinakilala sa SQL Server 2012. Ito ay ituturing NULL sa @ MyVar2 variable bilang isang walang laman na string habang concatenating mga string. Laging mas mahusay na gamitin ang function na ito sa halip na maglaro kasama ang opsyon na hanay ng CONCAT_NULL_YIELDS_NULL upang maiwasan ang anumang mga pagbabago sa code habang ang setting na ito ay hindi na i-deprecate.

Ipahayag ang @ MyVar1 bilang VARCHAR (50) = 'Ikaw ay', @ MyVar2 bilang VARCHAR (50) = NULL, @ MyVar3 bilang VARCHAR (50) = 'sa tech-recipes.com'; PUMILI ISNULL (@MyVar1, '') + ISNULL (@MyVar2, '') + ISNULL (@MyVar3, '');

ISNULL_SQL_Server_Avoid_NULL

Sa halimbawa sa itaas, ginagamit namin ang function na ISNULL upang suriin at palitan ang anumang NULL na pangyayari na may isang walang laman na string sa halip na gamitin ang setting na CONCAT_NULL_YIELDS_NULL. Maaari naming gamitin ang ANSI function COALESCE pati na rin sa halip ng ISNULL.

pinagmulan

Mag-iwan ng komento