在SQL Server2005中定义了一个用户函数,想达到在单元格中取出段落1与段落2之间的文字效果。具体如下: Create function dbo.mid (@content varchar(1000),@text1 varchar(30),@text2 varchar(30)) --@content is one paragraph where I wanna search target words. --@text1 is the words before target words. --@text2 is the words after target words. returns varchar(30) as begin declare @spaceindex1 int,@spaceindex2 int,@return varchar(30) set @spaceindex1=charindex(@text1,@content) set @spaceindex2=charindex(@text2,@content) set @return=substring(@content,@spaceindex1+len(@text1),@spaceindex2-@spaceindex1-len(@text1)) return @return end 定义完成后,使用该用户定义函数: Select dbo.mid ('baidu','b','u') 则能够返回 aid 但是用在对应的表中时,例如: select dbo.mid (tab1,'我的名字是:',',请多多关照.') from table1 会报 "消息 536,级别 16,状态 5,第 1行 传递到 SUBSTRING 函数的长度参数无效." 试过把substring中的长度参数从@spaceindex2-@spaceindex1-len(@text1)改为@spaceindex2-@spaceindex1-convert(varchar(20),len(@text1)) 依然上述错误 试过把每个参数都改为varchar(1000),依然报错。 我现在只能把substring中的长度参数改为@spaceindex2-@spaceindex1 这样不会报错了。但是这样的话我需要在用到的时候手动删除每个后面的多余字符。 请高手帮忙,如何修改可以到达所需效果,谢谢!
茅侃侃
相关分类