SQL Server 2014 da ISNULL () funktsiyasi kutilmaganda ishlaydi

Declare @Var1 Varchar(5) = Null
Declare @Var2 Varchar(10) = 'ABCDEFGHIJ'

SELECT ISNULL(@Var1, @Var2) AS Result

Natijada ABCDEFGHIJ ' bo'lishi mumkin emas, lekin natijada ' ABCDE ' hisoblanadi.

Bu funktsiyaning odatdagi xatti-harakatimi yoki men hech narsa yo'qotmayapmanmi?

0

6 javoblar

Savolingizga javob berish uchun, ha ISNULL ning odatdagi xatti-harakati. birinchi ifodaning turini oladi.

reference here https://msdn.microsoft.com/en-us/library/ms184325.aspx

NULL bo'lmasa, check_expression qiymati qaytariladi;   aks holda, replace_value yopiq bo'lganidan keyin qaytariladi   turlar boshqa bo'lsa, check_expression turiga o'tkaziladi.   replace_value qiymatidan kattaroq bo'lsa, replace_value qisqartirilishi mumkin   check_expression.

As an alternative you should rather use COALESCE

3
qo'shib qo'ydi

Coalesce() funktsiyasi argumentlari orasida nol bo'lmagan birinchi qiymatni qaytaradi, chunki coalesce funktsiyasidan foydalaning.

SELECT COALESCE(@Var1, @Var2) AS Result

Yoki siz e'lon qilingan o'zgaruvchining o'lchamini o'zgartirishingiz mumkin. Ikkalasi ham sizga kutilgan natijani beradi.

3
qo'shib qo'ydi

Siz varchar (5) ni ishlatdingiz, shuning uchun bu sodir bo'ladi

quyida foydalaning

 Declare @Var1 Varchar(50) = Null

bu sizning kutilgan javobingizni beradi

3
qo'shib qo'ydi

COALESCE funktsiyasi: ishonchingiz komil emas nima uchun ISNULL bu kabi chiqishni qaytaradi, lekin ISNULL (p1, p2) ni tekshirishda faqat birinchi Parametrning hajmini hisobga olishni nazarda tutadi.

SELECT COALESCE(@Var1, @Var2) AS Result
1
qo'shib qo'ydi

Buning sababi sizning manba o'zgaruvchining uzunligi 5 ga teng, shuning uchun boshqa qismi qisqartirildi

Declare @Var1 Varchar(10) = Null
Declare @Var2 Varchar(10) = 'ABCDEFGHIJ'

SELECT ISNULL(@Var1, @Var2) AS Result
0
qo'shib qo'ydi

ISNULL(@Var1, @Var2) Statement will copies the value of @Var2 to @var1 if @var1 is null, and Length of @var1 is 5 ,thats why it is showing only first five characters.

0
qo'shib qo'ydi