小小小收藏夾
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
下面是[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...