فانکشن STRING_SPLIT (Transact-SQL) در SQL Server
از متد STRING_SPLIT یا فانکشن برای گرفتن خروجی جدول از یک رشته کاراکتر با جداکننده استفاده می شود. ورودی ممکن است یک رشته کاراکتر یا یک سری عدد در قالب رشته با یک جداکننده باشد و خروجی یک جدول خواهد بود. (ورژن SQL Server مورد نیاز برای اجرای این فانکشن 2016 و بالاتر می باشد. برای نسخه های پایینتر از متد ارائه شده در قسمت دوم همین مقاله استفاده فرمائید.)
STRING_SPLIT (string , separator)
مثال:
SELECT value as ExNums FROM STRING_SPLIT('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 |