当前位置: 代码迷 >> Sql Server >> sql server怎么调用自定义的表值函数
  详细解决方案

sql server怎么调用自定义的表值函数

热度:74   发布时间:2016-04-24 09:22:59.0
sql server如何调用自定义的表值函数
create  function [dbo].[f_split](@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
as 
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return 
end

select * from  f_split(ab-cd-erf,‘-’)这样没有问题,
但调用select f_split(应用行业代码,';')   FROM [master].[dbo].[分列测试]会报错,'f_split' 不是可以识别的 内置函数名称。这样的自定义函数应该怎样调用?
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

你用的是master库里面的函数,你把master去掉看看

没有用,还是报错'f_split' 不是可以识别的 内置函数名称。


不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。


那应该怎么调用,select *  FROM f_split(应用行业代码,';')  这样吗,那表名应该写在哪?


我看你是想用个拼接是吧?
那你可以试下这样写
select  *
   FROM [master].[dbo].[分列测试]  a 
   cross apply f_split(a.应用行业代码,';')  as b
  相关解决方案