建立錶值函式:
1查詢到的結果如下:create
function
[dbo
].[f_split]2
(3@splitstring
nvarchar(max), --
源字串a
4@separator
nvarchar(10)=''
--分隔字串b,預設為空格5)
6returns
@splitstringstable
table
--輸出的資料表7(
8[id]
intidentity(1,1),9
[value
]nvarchar(max)10
)11as12
begin
13declare
@currentindex
int;--
開始擷取字串a的位置
14declare
@findindex
int;--
查詢到字串b的位置
15declare
@returntext
nvarchar(max);--
分割後的字元
1617
--儲存被擷取字串b的長度
18declare
@separatorlen
int; set
@separatorlen
=len(@separator
);19
20select
@currentindex=1
;21while(@currentindex
<=
len(@splitstring))--
遍歷字串a
22begin
23--
charindex(目標字串,被查詢的字串,開始查詢的位置(為空時預設從第一位開始查詢))
24select
@findindex
=charindex(@separator,@splitstring,@currentindex);--
獲取b在a中的位置
2526
--如果b不存在a中,下一次查詢到字串的位置為:a的長度+b的長度
27if(@findindex=0
or@findindex
isnull) begin
select
@findindex
=len(@splitstring)+
@separatorlen;end
28--
獲取分隔後的字元
2930
--substring(被擷取的字串,開始擷取字串的位置,擷取字串的長度)
31select
@returntext
=substring(@splitstring,@currentindex,@findindex
-@currentindex
);32
insert
into
@splitstringstable([
value
]) values(@returntext
);33
34--
初始化開始擷取字串a的位置
35select
@currentindex
=@findindex
+@separatorlen;36
end37
return;38
end
sql 字串分隔函式
declare str varchar max declare i int set str 123,456,789 set i charindex str print i print left str,i 1 分隔字串 例如 123,456,789 返回 例如 123 456 789 create ...
SQL 字串分隔函式
查詢某個 逗號分隔的字段 select from accinformation a where 啟用 in select from dbo.fnsplitstr ccaption,select from dbo.fnsplitstr 1,2,3 create function dbo fnsplit...
字串分隔
題目 連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。輸入 abc 123456789輸出 abc00000 12345678 90000000 include include using namespace std char str...