有時我們要用到批量操作時都會對字符串進行拆分,可是SQL Server中卻沒有自帶Split函數,所以要自己來實現了。沒什么好說的,需要的朋友直接拿去用吧
?
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
/*
by kudychen 2011-9-28
*/
CREATE
function
[
dbo
]
.
[
SplitString
]
(
@Input
nvarchar
(
max
),
--
input string to be separated
@Separator
nvarchar
(
max
)
=
'
,
'
,
--
a string that delimit the substrings in the input string
@RemoveEmptyEntries
bit
=
1
--
the return value does not include array elements that contain an empty string
)
returns
@TABLE
table
(
[
Id
]
int
identity
(
1
,
1
),
[
Value
]
nvarchar
(
max
)
)
as
begin
declare
@Index
int
,
@Entry
nvarchar
(
max
)
set
@Index
=
charindex
(
@Separator
,
@Input
)
while
(
@Index
>
0
)
begin
set
@Entry
=
ltrim
(
rtrim
(
substring
(
@Input
,
1
,
@Index
-
1
)))
if
(
@RemoveEmptyEntries
=
0
)
or
(
@RemoveEmptyEntries
=
1
and
@Entry
<>
''
)
begin
insert
into
@TABLE
(
[
Value
]
)
Values
(
@Entry
)
end
set
@Input
=
substring
(
@Input
,
@Index
+
datalength
(
@Separator
)
/
2
,
len
(
@Input
))
set
@Index
=
charindex
(
@Separator
,
@Input
)
end
set
@Entry
=
ltrim
(
rtrim
(
@Input
))
if
(
@RemoveEmptyEntries
=
0
)
or
(
@RemoveEmptyEntries
=
1
and
@Entry
<>
''
)
begin
insert
into
@TABLE
(
[
Value
]
)
Values
(
@Entry
)
end
return
end
?
如何使用:
declare
@str1
varchar
(
max
),
@str2
varchar
(
max
),
@str3
varchar
(
max
)
set
@str1
=
'
1,2,3
'
set
@str2
=
'
1###2###3
'
set
@str3
=
'
1###2###3###
'
select
[
Value
]
from
[
dbo
]
.
[
SplitString
]
(
@str1
,
'
,
'
,
1
)
select
[
Value
]
from
[
dbo
]
.
[
SplitString
]
(
@str2
,
'
###
'
,
1
)
select
[
Value
]
from
[
dbo
]
.
[
SplitString
]
(
@str3
,
'
###
'
,
0
)
?
執行結果:
?
里面還有個自增的[Id]字段哦,在某些情況下有可能會用上的,例如根據Id來保存排序等等。
?
例如根據某表的ID保存排序:
update
a
set
a.
[
Order
]
=
t.
[
Id
]
from
[
dbo
]
.
[
表
]
as
a
join
[
dbo
]
.SplitString(
'
1,2,3
'
,
'
,
'
,
1
)
as
t
on
a.
[
Id
]
=
t.
[
Value
]
?
具體的應用請根據自己的情況來吧:)
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

