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

2022-09-16 21:51:36 字數 1614 閱讀 2613

小小小收藏夾

2009-09-08 09:52:59

閱讀558

字型大小:大中小

訂閱 示例:傳入多個email位址,通過每個email位址間的','分隔符,將各email位址分開。

select * from dbo.uf_split('[email protected],[email protected],[email protected],[email protected]',',');

查詢結果:

subid     autoid

[email protected]

[email protected]

[email protected]

[email protected]

下面是[uf_split]方法的具體實現:

create   function [dbo].[uf_split](@str varchar(max),@splitchar char(1))      

returns  @t table(subid varchar(1000),autoid int) as       

/*      

subject:split函式(目前只能對單個字元進行分割,不能以片語方式分割)      

author:kq zhou     

create date:2009-4-1      

*/      

begin      

declare @substr varchar(max)      

set @substr=@str      

declare @i int,@j int      

set @j=len(replace(@str,@splitchar,replicate(@splitchar,2)))-len(@str)--獲取分割符個數      

if @j=0      

begin      

insert into @t values (@substr,1) --沒有分割符則插入整個字串       

end      

else      

begin      

set @i=0      

declare @m int      

while @i<=@j      

begin      

if(@i<@j)      

begin      

set @m=charindex(@splitchar,@substr)-1 --獲取分割符的前一位置      

insert into @t values(left(@substr,@m),@i+1)       

set @substr=right(@substr,len(@substr)-(@m+1)) --去除已獲取的分割串,得到還需要繼續分割的字串      

end      

else      

begin      

insert into @t values(@substr,@i+1)--對最後乙個被分割的串進行單獨處理       

end       

set @i=@i+1       

end      

end      

return       

end    

go

Oracle 根據分隔符分隔字串

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

awk,分隔符編輯擷取字元

輸入字段分隔符 awk的內建變數fs中儲存了輸入字段分隔符的值。使用fs的預設值時,awk用空格或製表符來分隔字段,並且刪除各字段前多餘的空格或製表符。可以通過在begin語句中或命令列上賦值來改變fs的值。接下來我們就要在命令列上給fs指定乙個新的值。在命令列上改變fs的值需要使用 f選項,後面指...

Oracle函式,按分隔符擷取字串 問題點數

今天因工作需要,寫了乙個小函式,按分隔符擷取字串的,分享出來,希望有需要的朋友能用到。功能例項 substrbysep aaa,bb,ccccc,ddd,vvv 3 返回結果 ccccc 函式 create or replace function substrbysep sourcestring v...