HOW 2 LEARN ASP.NET
نویسنده : delshad
تاریخ  : ۱۳۸۸/۲/۱۸
امتیاز :
بازدید : 2124
موضوع : الصاق (Concat) کردن رکورد ها در SQL Server
توضیحات : در این مقاله نحوه Concat کردن رکورد های بانک اطلاعاتی SQL Server آموزش داده می شود .
     

چسباندن رکورد های دریافتی از یک Query در SQL Server به صورت رشته ای

 در بخش انتهایی مقاله زیر بنده در مورد نحوه Split کردن یک رشته در بانک اطلاعاتی SQl Server توضیح دادم :

بنده در این مقاله شرح دادم که به کمک یک تابع که نام آن را FnSplit گذاشتیم چطور می توانیم یک رشته  که  به وسیله بک کاراکتر جدا کننده (مانند ',') از هم جدا شده اند را به صورت رکورد هایی در یک ستون در آوریم ، این کار کاربرد زیادی در حذف ، ویرایش و دریافت اطلاعات از بانک اطلاعاتی دارد .

حال به نحوه Concatenate (چسباندن) کردن رکورد های بانک اطلاعاتی و نمایش آن به صورت یک رشته Split شده توسط یک کاراکتر جدا ساز می پردازیم :

با یک مثال این ترفند را بیان می کنم ، فرض کنید که یک جدول در بانک اطلاعاتی برای ذخیره اطلاعات کاربران خود دارید و می خواهید با یک Query ایمیل همه این کاربران را دریافت کرده و آن را ذخیره کنید ، احتمالا یک Query به شکل زیر خواهید داشت :

Select Email From TblMembers

پس از اجرای دستور فوق  شما ایمیل های کاربران در چندین رکورد دریافت خواهید کرد ، سپس توسط DataReader یا DataSet اطلاعات را در یک حلقه خوانده و در یک فایل متنی ذخیره می کنید .

حال بنده Query فوق را به صورت زیر می نویسم و آن را در یک  Sp ذخیره می کنم :

DECLARE @Emails varchar(MAX)
SET @Emails = ''


SELECT @Emails = COALESCE(@Emails + ', ', '') + CAST(Email AS varchar(50))
FROM         TBLMembers

SELECT @Emails

در دستور فوق تمامی ایمیل ها توسط کاراکتر ',' به یکدیگر الصاق شده و شما کل ایمیل ها را یکجا و به صورت چسبانده شده می توانید توسط یک ExecuteScaler ساده دریافت کنید .

دستور COALESCE اولین رشته غیر پوچ را بر می گرداند ، بنابراین اگر رشته اول (@Emails + ', ') پوچ باشد به سراغ رشته دوم ('') رفته و آن را بر میگرداند ، در غیر این صورت همان رشته اول بازگردانده می شود ، بنابراین Query فوق را به صورت زیر نیز می توان نوشت :

DECLARE @Emails varchar(MAX)
SET @Emails = ''

SELECT   @Emails=CASE @Emails
				WHEN '' THEN Email
				ELSE @Emails + ', ' + Email
				END
FROM         TBLMembers

select @Emails;

 


 

 

 
امتیاز بدهید :

هیچ نظری داده نشده است

 
نظر بدهید :
لطفا سوالات فنی خود را در تالار گفتگو www.forum.how2learnasp.net مطرح نمایید
نام :  
ایمیل :    
نظرات :
 
Xml rss feed

 

Valid CSS! Atom rss feed
Ali Delshad Official Site