/***方法一
*/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...