MySQL字串分割自定義函式

2021-09-01 10:54:10 字數 1908 閱讀 6851

/***方法一

*/select * from dbo.split(』01__02__03』,』__』)

發生錯誤,返回的結果不是我們原本要的結果:

-------------------

--想要的結果

0102

03-----------------

--實際結果:

01_02

_03以前我也寫過類似的字串分割自定義函式,也沒有想過上面出現的這樣問題。

我原來的函式是這樣的:

/* stringtotable 

*/ create function stringtotable(@stringx varchar(8000),@split nvarchar(10)) 

returns @tableresult table(tableid nvarchar(20)) 

as begin 

declare @index int 

set @index=charindex(@split,@stringx,1) 

while (@index>=1) 

begin 

insert into @tableresult select left(@stringx,@index-1) 

select 

@stringx=right(@stringx,len(@stringx)-@index),@index=charindex(@split,@stringx,1) 

end 

if(@stringx<>』』) insert into @tableresult select @stringx 

return 

end使用類似的select * from dbo.split(』01__02__03』,』__』) 一樣出問題。

經過一下的修改就可以了,修改後程式為: 

/* stringtotable 

*/ create function stringtotable(@stringx varchar(8000),@split nvarchar(10)) 

returns @tableresult table(tableid nvarchar(20)) 

as begin 

declare @index int 

declare @lenindex int 

select @lenindex=len(@split),@index=charindex(@split,@stringx,1) 

while (@index>=1) 

begin 

insert into @tableresult select left(@stringx,@index-1) 

select 

@stringx=right(@stringx,len(@stringx)-@index-@lenindex+1),@index=charindex(@split,@stri 

ngx,1) 

end 

if(@stringx<>』』) insert into @tableresult select @stringx 

return 

end*方法二

set @b='123;234;567;789'; 

create temporary table splittable(

id int auto_increment primary key,

value varchar(20)

set @sql=concat(concat("insert into splittable(value) values ('",replace(@b,';',"'),('")),"')"); 

prepare stem from @sql;

execute stem;

select * from splittable;

SQL Server 自定義字串分割函式

原文 sql server 自定義字串分割函式 一 按指定符號分割字串,返回分割後的元素個數,方法很簡單,就是看字串中存在多少個分隔符號,然後再加一,就是要求的結果 標量值函式 1 create function func strarraylength 2 3 str varchar 1024 要分...

字串分割自定義函式 SQL

今天中看到一朋友寫的sql中分割字串函式 在回帖中看到一朋友說到 select from dbo.split 01 02 03 發生錯誤,返回的結果不是我們原本要的結果 想要的結果 0102 03 實際結果 01 02 03以前我也寫過類似的字串分割自定義函式,也沒有想過上面出現的這樣問題。我原來的...

oracle過濾分割字串自定義函式

該函式實現過濾前後的指定的字串,諸如過濾分隔符等。可用於過濾字串中的逗號分割符。特別說明 substr 函式支援從字串倒數開始讀取,例如 dbms output.put line substr hello world 3,3 執行結果 rld 過濾字串前後的多疑字元,諸如過濾字串前後的多餘逗號 fu...