خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


یکی کردن چندین ردیف SQL Server در یک ردیف

یکی کردن چندین ردیف SQL Server در یک ردیف
در برخی شرایط خاص در SQL Server شاید نیاز داشته باشید که چندین Row یا ردیف را با هم ترکیب کنید و در یک فیلد به اصطلاح concatenate کنید. روش های مختلفی برای concatenate کردن ردیف ها در SQL وجود دارد. برای این منظور ما چند روش ساده را در ادامه مورد بررسی قرار می دهیم و شما هم می توانید از همین متدهای ساده استفاده کنید.

سیستم یکپارچۀ سازمانی راهکار



Concatenate Multiple Rows Using FOR XML PATH

ساده ترین و سرراست ترین راه حل برای ترکیب کردن چند ردیف در یک ردیف رشته ای، استفاده از FOR XML PATH در Select می باشد. متد FOR XML PATH در SQL SERVER 2005 نسخ بالاتر قابل اجرا و استفاده می باشد.
در کوئری پایین، من چندین ردیف CountryName را در یک ردیف concatenated کردم و کارکتر کاما را بین اسامی هر کشور قرار دادم.

Select CountryName from Application.Countries;

Select SUBSTRING(
(
SELECT ',' + CountryName AS 'data()'
FROM Application.Countries FOR XML PATH('')
), 2 , 9999) As Countries

یکی کردن چندین ردیف SQL Server در یک ردیف
همانطور که در خروجی دستور مشاهده می کنید، یک Space بین نام کشورها تا علامت کاما وجود دارد و این هم به سبب data() در کوئری فوق می باشد. اگر به این فضا نیازی ندارید، می توانید از کوئری زیر استفاده کنید:

SELECT Countries = STUFF((
SELECT ',' + CountryName
FROM Application.Countries
FOR XML PATH('')
), 1, 1, '')

Concatenate Rows Using COALESCE

با استفاده از متد COALESCE می توانید چندین ردیف را در یک ردیف از String یا رشته ای، Concatenate کنید. روش COALESCE را می توان در نسخه SQL Server 2008 و بالاتر استفاده کرد. کاری که شما باید انجام دهید این است که یک متغیر varchar و در داخل COALESCE را اعلام کنید و متغیر را با کاما و ستون یکی کنید. سپس COALESCE را به متغیر اختصاص دهید.

Select CountryName from Application.Countries

Declare @val Varchar(MAX);
Select @val = COALESCE(@val + ', ' + CountryName, CountryName)
From Application.Countries Select @val;

یکی کردن چندین ردیف SQL Server در یک ردیف

Using STRING_AGG

STRING_AGG یک تابع رشته ای در SQL Server می باشد که فرآیند یکی کردن ردیف ها در یک ردیف را آسان و ساده کرده است. STRING_AGG برای این منظور طراحی شده و متاسفانه فقط از SQL Server 2017 و نسخ بعد از آن قابل استفاده و در دسترس می باشد. نحو استفاده از STRING_AGG به شرح زیر است.

SELECT STRING_AGG( ISNULL(CountryName, ' '), ',') As Countries
From Application.Countries


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز