字串分割自定義函式 SQL

2022-01-30 09:46:49 字數 1601 閱讀 3430

今天中看到一朋友寫的sql中分割字串函式:

在回帖中看到一朋友說到:

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

MySQL字串分割自定義函式

方法一 select from dbo.split 01 02 03 發生錯誤,返回的結果不是我們原本要的結果 想要的結果 0102 03 實際結果 01 02 03以前我也寫過類似的字串分割自定義函式,也沒有想過上面出現的這樣問題。我原來的函式是這樣的 stringtotable create f...

SQL Server 自定義字串分割函式

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

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

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