下面函数的功能是:根据分割符@split来分割@str。
测试发现当@str长度超过100时,超出部分会被截断。请问如何正确传递长度大于100的@str给该函数,谢谢!!
测试用例:
DECLARE @machnos varchar(100)
SET @machnos='AB-01,AB-02,AB-04,AB-05,AB-06,AB-07,AB-08,AB-09,AB-10,AB-11,AB-12,AB-13,AB-14,AB-15,AB-16,AB-17,AB-28,AB-19,AB-20,AB-21,AB-22,AB-23,AB-24,AB-29,AB-32,AB-33,AB-34'
SELECT * FROM SplitStr(@machnos,',')
-----------------------------------------------------------------------------------
--自定义函数
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[SplitStr](@str nvarchar(max),@split nvarchar(100))
returns @t Table(col nvarchar(1000))
as begin    
declare @i int    
declare @s int    
set @i=1    
set @s=1    
while(@i>0)    
begin           
 set @i=charindex(@split,@str,@s)        
if(@i>0)        
begin            
insert @t(col) values(substring(@str,@s,@i-@s))       
 end           
else begin            
insert @t(col) values(substring(@str,@s,len(@str)-@s+1))       
end        
set @s = @i + 1      
 end    
return
end
----------------------------------------------------------------------------------