تبدیل رشته به جدول با استفاده از STRING_SPLIT در SQL Server

فانکشن STRING_SPLIT (Transact-SQL) در SQL Server

توسط admin | گروه SQL Server | 1400/01/03

نظرات 0

 از متد STRING_SPLIT یا فانکشن برای گرفتن خروجی جدول از یک رشته کاراکتر با جداکننده استفاده می شود. ورودی ممکن است یک رشته کاراکتر یا یک سری عدد در قالب رشته با یک جداکننده باشد و خروجی یک جدول خواهد بود. (ورژن SQL Server مورد نیاز برای اجرای این فانکشن 2016 و بالاتر می باشد. برای نسخه های پایینتر از متد ارائه شده در قسمت دوم همین مقاله استفاده فرمائید.) 

STRING_SPLIT (string , separator)

مثال:

SELECT value as ExNums FROM STRING_SPLIT('1,2,5,3,20' , ',');

خروجی:

ExNums
1
2
5
3
20

 استخراج اعداد و یا رشته ها به صورت خروجی جدول یا Table معادل متد یا فانکشن STRING_SPLIT در نسخه های پایینتر از SQL Server 2016 با استفاده از متد زیر انجام می شود. همانطور که در ابتدای مقاله توضیح داده شد متد STRING_SPLIT در ورژن 2016 و بالاتر قابل استفاده می باشد.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Create FUNCTION dbo.Split_String_Under2016(@StringToSplit VARCHAR(MAX) , @Seperator char(1))
RETURNS
 @ListRet TABLE ([FieldName] nvarchar(200))
AS
BEGIN
 DECLARE @name NVARCHAR(255)
 DECLARE @pos INT
 WHILE CHARINDEX(@Seperator, @stringToSplit) > 0
 BEGIN
  SELECT @pos  = CHARINDEX(@Seperator, @stringToSplit)  
  SELECT @name = SUBSTRING(@stringToSplit, 1, @pos-1)
  INSERT INTO @ListRet 
  SELECT @name
  SELECT @StringToSplit = SUBSTRING(@stringToSplit, @pos+1, LEN(@stringToSplit)-@pos)
 END
 INSERT INTO @ListRet
 SELECT @StringToSplit
 RETURN
END

مثال:

select * from  dbo.Split_String_Under2016(N'12,5,36,pk,Tg32' , ',')

FieldName
12
5
36
pk
Tg32

 

 

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620