SQL 根據給定的分隔符,分解字串

2021-09-09 00:06:29 字數 2763 閱讀 1822

如果有乙個字串 eg: "sun,star,moon,clouds",想要在ms sql中根據給定的分隔符','把這個字串分解成各個元素[sun] [star] [moon] [clouds],如何實現呢?為此,建立乙個function,**如下:

create

function

[dbo

]. [

split_strbydelimiter

]( @string

varchar(

8000), 

@delimiter

char(

1))       

returns

@temptable

table (items 

varchar(

8000))       

asbegin

declare

@idx

intdeclare

@slice

varchar(

8000)       

select

@idx=1

iflen(

@string)

<1or

@string

isnull

return

while

@idx!=0

begin

set@idx

=charindex(

@delimiter,

@string)       

if@idx!=0

set@slice

=left(

@string,

@idx

-1)       

else

set@slice

=@string

if( len(

@slice)

>

0)  

insert

into

@temptable(items) 

values(

@slice)       

set@string

=right(

@string,

len(

@string) 

-@idx)       

iflen(

@string) 

=0break

endreturn

end

示例:如果輸入 

select

*from dbo.split_strbydelimiter(

'sun,star,moon,clouds

', ',')

結果返回

sunstar

moon

clouds

在上面的**做變形,返回有多少個元素

create

function

[dbo

]. [

getcount_split_strbydelimiter

]( @string

varchar(

8000), 

@delimiter

char(

1))     

returns

intas

begin

declare

@temptable

table (items 

varchar(

8000))   

declare

@splitcount

intdeclare

@idx

intdeclare

@slice

varchar(

8000)       

select

@idx=1

iflen(

@string)

<1or

@string

isnull

return

0while

@idx!=0

begin

set@idx

=charindex(

@delimiter,

@string)       

if@idx!=0

set@slice

=left(

@string,

@idx

-1)       

else

set@slice

=@string

if( len(

@slice)

>

0)  

insert

into

@temptable(items) 

values(

@slice)       

set@string

=right(

@string,

len(

@string) 

-@idx)       

iflen(

@string) 

=0break

endset

@splitcount

=( select

count(

*) from

@temptable)

return

@splitcount

end

示例 select  dbo.getcount_split_strbydelimiter(

'sun,star,moon,clouds

', ',')

結果返回

Oracle 根據分隔符分隔字串

為了讓pl sql 函式返回資料的多個行 必須通過返回乙個 ref cursor 或乙個資料集合來完成 ref cursor 的這種情況侷限於可以從查詢中選擇的資料 而整個集合在可以返回前 必須進行具體化 oracle 9i 通過引入的管道化表函式糾正了後一種情況 表函式是返回整個行的集 通常作為乙...

SQL操作 根據分隔符擷取字串

小小小收藏夾 2009 09 08 09 52 59 閱讀558 字型大小 大中小 訂閱 示例 傳入多個email位址,通過每個email位址間的 分隔符,將各email位址分開。select from dbo.uf split aa aa.com,bb bb.com,cc cc.com,dd dd...

sql 中的分隔符

1 通過分隔符可以將其中的內容作為乙個整體的字串進行處理。假設資料庫中有乙個表,名為user info,注意這個名字,user 和 info 中間存在乙個空格。如果直接寫如下查詢,會報錯,可能會提示 user 表不存在或者 user 附近有語法錯誤。select from user info 這時就...