ورود

View Full Version : آموزش: الحاق null و یک رشته و روش ظاهر شدن رشته بجای null در خروجی



HosseinProgrammer
دوشنبه 07 دی 1388, 10:31 صبح
سلام. من کدی بصورت زیر نوشته ام:


Create Table tb1
(
name nvarchar(20),
family nvarchar(25)
)

insert into tb1 values('ali', 'mohseni'),('mohammad',null),(null, null)

Select name+' '+family AS 'Full name'
From tb1


خروجی Select بالا ، بصورت زیر خواهد بود:


Full name
---------------------
ali mohseni
NULL
NULL


ولی من خروجی زیر را می خواهم:


Full name
---------------------
ali mohseni
mohammad
NULL


یعنی میخوام اگه از دو فیلدی که با هم جمع می شوند ، یکیشون null بود ، فیلدی که null نیست در خروجی بیاید.

توجه: یک روش استفاده از "مقدار پیش فرض" می باشد. یعنی مقدار پیش فرض دو فیلد را ' ' بگذاریم. ولی من این روش را نمیخواهم.

ممنون میشم اگه جوابمو بدین...

behrouzlo
دوشنبه 07 دی 1388, 10:51 صبح
select isnull(name,'') + IsNull(family,'') From tb1

از تابع ISNull استفاده كنيد

محمد سلیم آبادی
دوشنبه 07 دی 1388, 11:35 صبح
select isnull(name,'') + IsNull(family,'') From tb1




از تابع ISNull استفاده كنيد


در کوئری فوق در صورتی که هر دو مقدار غیر null باشند دو رشته به یکدیگر می چسبد برای رفع این مشکل از این کوئری استفاده کنین:




SELECT ISNULL(name,'')
+CASE WHEN name IS NULL AND family IS NULL THEN 'NULL'
WHEN name IS NULL OR family IS NULL THEN ''
ELSE ' '
END
+ISNULL(family, '') AS 'Full name'
FROM tb1

HosseinProgrammer
دوشنبه 07 دی 1388, 17:40 عصر
ممنون از جوابتون. خط زیر در کد شما به چه دردی میخوره؟ چون حذفش کردم تفاوتی ایجاد نشد.


WHEN name IS NULL OR family IS NULL THEN ''

محمد سلیم آبادی
دوشنبه 07 دی 1388, 21:22 عصر
فرض کنید مقدار زیر را در جدول درج کرده این:


Insert Into tbl Values (null , 'mohammadi')


کوئری را بدون و با خط مذکور اجرا کنین. چه تفاوتی می بینید؟