create function [dbo].[f_splitstr](
@s varchar(8000), --待分拆的字串
@split varchar(10) --資料分隔符
)returns @re table(
col varchar(max))
as
begin
declare
@splitlen int
-- 取分隔符的長度, 在分隔符後面加乙個字元是為了避免分隔符以空格結束時, 取不到正確的長度
set @splitlen = len(@split + 'a') - 2
-- 如果待分拆的字串中存在資料分隔符, 則迴圈取出每個資料項
while charindex(@split, @s)>0
begin
-- 取第乙個資料分隔符前的資料項
insert @re values(left(@s, charindex(@split, @s) - 1))
-- 將已經取出的第乙個資料項和資料分隔符從待分拆的字串中去掉
set @s = stuff(@s, 1, charindex(@split, @s) + @splitlen, '')
end
-- 儲存最後乙個資料項(最後乙個資料項後面沒有資料分隔符, 故在前面的迴圈中不會被處理)
insert @re values(@s)
return
end
例子:
declare @str varchar(500)
declare @symbol varchar(10)
set @str = '1+2+5.12+12.9'
set @symbol = '+'
select * from dbo.f_splitstr(@str,@symbol)
sqlserver字串拆分
1 sql對字串的處理能力比較弱,比如我要迴圈遍歷象1,2,3,4,5這樣的字串,如果用陣列的話,遍歷很簡單,但是t sql不支援陣列 2 自己來實現 create function udf split words nvarchar max 原始字串 splitstr varchar 50 分割字元...
sql server拆分字串
parsename是乙個分隔字串的函式,根據 作為分隔符,快速獲取分解後的部分,通常用來拆分ip位址,通過replace函式也可以靈活拆分其他字串。1 拆分ip位址。select parsename 192.168.0.8 1 輸出8select parsename 192.168.0.8 2 輸出...
sqlserver字串拆分 split 方法彙總
sqlserver字串拆分 split 方法彙總 方法0 動態sql法 declare s varchar 100 sql varchar 1000 set s 1,2,3,4,5,6,7,8,9,10 set sql select col replace s,union all select pr...