今天中看到一朋友寫的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...