SQL字串轉換為陣列

2021-07-10 19:26:05 字數 4330 閱讀 8551

思路:

按指定符號分割字串,返回分割後的元素個數,方法很簡單,就是看字串中存在多少個分隔符號,然後再加一,就是要求的結果。

——返回字串陣列長度函式

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...