思路:
按指定符號分割字串,返回分割後的元素個數,方法很簡單,就是看字串中存在多少個分隔符號,然後再加一,就是要求的結果。
——返回字串陣列長度函式
create function get_strarraylength
( @str varchar(5000), --要分割的字串
@split varchar(10) --分隔符號
)returns int
asbegin
declare @location
int declare @start
int declare @length
int set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while
@location
<>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
endreturn
@length
end
——按指定符號分割字串,返回分割後指定索引的第幾個元素
create function get_strarraystrofindex
( @str varchar(5000), --要分割的字串
@split varchar(10), --分隔符號
@index
int --取第幾個元素
)returns varchar(5000)
asbegin
declare @location
int declare @start
int declare @next
int declare @seed
int set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while
@location
<>0
and@index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
endif
@location =0
select
@location =len(@str)+1
return substring(@str,@start,@location-@start)
end
——呼叫示例
--******************************====
declare @str varchar(5000)
set @str='1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48'
print dbo.get_strarraylength(@str,',')
declare @next
intdeclare @s varchar(100)
set @next=1
while @next
<=dbo.get_strarraylength(@str,',')
begin
print dbo.get_strarraystrofindex(@str,',',@next) ----輸出陣列中的值
set @next=@next+1
end--******************************====
——檢查乙個元素是否在陣列中
create function checkstrinarr(@s as
varchar(50),@sarr as
varchar(5000)) returns int
asbegin
declare @str varchar(5000)
set @str=@sarr
declare @next
intdeclare @ret int
set @ret=0
set @next=1
while @next
<=dbo.get_strarraylength(@str,',')
begin
if dbo.get_strarraystrofindex(@str,',',@next)=@s
begin
set @ret=1;
endset @next=@next+1
endreturn @ret
end-- *****====呼叫示例*****===
declare @a int
set @a=dbo.checkstrinarr('8','2,3,5,8')
select @a
-- *****====呼叫示例*****===
——檢查乙個元素是否與陣列中的相匹配
--select dbo.checkstrlikeinarr(2,'d','sde,df,aad,d,fgsa,fgd')
create function checkstrlikeinarr
(@liketype int=0, --like型別(0為為@keyword%,2為) 一般只用0
@keyword as varchar(50), --要檢查的關鍵字
@sarr as varchar(5000) --陣列
) returns nvarchar(max)
as begin
declare @str varchar(5000)
set @str=@sarr
declare @start int
declare @result nvarchar(max)
set @result=''
set @start=1
declare @temp nvarchar(20);
while
@start
<=dbo.get_strarraylength(@str,',')
begin
if@liketype=0
begin
set @temp=dbo.get_strarraystrofindex(@str,',',@start);
if@temp like '%'+ @keyword+'%'
begin
set @result=@result+ @temp +',';
endset @start=@start+1
endelse
if@liketype=1
begin
if dbo.get_strarraystrofindex(@str,',',@start) like ''+ @keyword +'%'
begin
set @result=dbo.get_strarraystrofindex(@str, ',' , @start)+',';
endset @start=@start+1
endelse
if@liketype=2
begin
if dbo.get_strarraystrofindex( @str, ',' , @start) like '%'+ @keyword+''
begin
set @result=dbo.get_strarraystrofindex(@str, ',' , @start)+',';
endset @start=@start+1
endend
return
@result
-- return cast(dbo.get_strarraylength(@result,',')as nvarchar(2000))
end
js 把字串陣列轉換為陣列
在對接的過程中,後台傳來的資料其中有乙個是陣列字串,這時候就需要解析成純陣列了。使用json.parse 可以解析 let str abc def console.log str string json.parse str console.log str abc def 字串 2 abc def 陣...
flex將字串轉換為陣列
有一堆字串,想把它轉換為陣列。解決辦法 使用string.split 方法 討論 string 類的split 方法把字串轉換為陣列,但前提是字串中含有統一的分割符,比如susan,robert,paula 字串分割符為逗號 split 方法接受兩個引數 分割符 用分割符來分割字串,如果沒定義,則把...
C 陣列字串轉換為vector
兩個格式轉換函式 將如 1,2,3 的一維陣列字串 長度不必指定 轉換為的vector vector int str2vec string str str.pop back str.erase str.begin vector int v istringstream is str string te...