--迴圈按固定長度擷取
--cj2249301801,cj2249300803,cj2249301901,cj2249302003 擷取 形式301,300,301,302
create function [dbo].[fn_loopsubstring](
@string nvarchar(max),
@spchar char(1),
@strlen int,
@eachstrenoughlenstartindex int,
@eachstrenoughlenendindex int,
@eachstrnotenoughlenstartindex int,
@eachstrnotenoughlenendindex int
)returns nvarchar(max)
asbegin
--declare @string as nvarchar(max) -- 源字串,子串間用分隔符隔開
--declare @spchar as char(1) -- 分隔符
--declare @strlen int
--declare @eachstrenoughlenstartindex int
--declare @eachstrenoughlenendindex int
--declare @eachstrnotenoughlenstartindex int
--declare @eachstrnotenoughlenendindex int
--set @spchar=',' -- 分隔符
--set @string='cj2249301801,cj2249300803,cj2249301901,cj2249302003'
--set @strlen=12
--set @eachstrenoughlenstartindex=6
--set @eachstrenoughlenendindex=3
--set @eachstrnotenoughlenstartindex=1
--set @eachstrnotenoughlenendindex=3
declare @startindex as int -- 起點
declare @endindex as int -- 結束點
declare @log as nvarchar(max) -- 執行記錄
declare @count as int -- 查詢次數
-- 源字串,起點不包含分隔符,結束包含分隔符
set @startindex=0 -- 0位置為初起點
set @log=''
set @count=1
select @endindex=charindex(@spchar,@string);-- 第1個分隔符位置為結束點
-- charindex找不到字串時,返回0.迴圈成立條件是能找到分隔符
while @endindex>0
begin
declare @substr as nvarchar(20) -- 子字串
-- 根據起止點及起止點之差為長度找出子字串
select @substr=substring(@string,@startindex,@endindex-@startindex)
-- 下一起點為當前止點加1
set @startindex=@endindex+1
-- 查詢下一分隔符位置,即新的止點
set @endindex=charindex(@spchar,@string,@startindex);
if len(@substr)>=@strlen
begin
set @substr=substring(@substr,@eachstrenoughlenstartindex,@eachstrenoughlenendindex)
end;
else
begin
set @substr=substring(@substr,@eachstrnotenoughlenstartindex,@eachstrnotenoughlenendindex)
end;
if @count=1
begin
set @log=@log+@substr
end;
else
begin
set @log=@log+@spchar+@substr
end;
set @count=@count+1
endreturn @log
end; awk擷取字段
file 期望每行刪除第二個 之前的內容,得到 isbctruncate 1 socialtime 1 nettype mobile isbctruncate 1 socialtime 1 nettype pc 我的處理方法是 awk f file 從第三個字元開始處理,並且以 為分隔符,因為最後乙...
oracle中substr函式(擷取字段)
所使用函式 substr string,start,length string 索要擷取的字串 start 從第幾個字元開始,0 1都是從頭開始 length 要擷取字元的長度,不寫預設擷取 到結束的字元 以上例項第一列是原欄位,第二列是從0開始,擷取長度2,第三列是1開始,擷取長度2,可以看出所擷...
mysql按關鍵符號擷取字段
比如以下字段內容,我要擷取以 為分割的部分內容 banner 2 1 png gcjx e extend uploadimg upload upload files 2020 07 02 9d2cba0773d47bad2cc8f8f36ee0a344.png 35231 banner 2.png ...