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' 不是可以识别的 内置函数名称。这样的自定义函数应该怎样调用?
9 个解决方案
#1
你用的是master库里面的函数,你把master去掉看看
#2
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
#3
你看看你新建的函数f_split是建在哪个库 在函数之前加上 数据库名称.dbo.f_split
#4
这个我测试过了,加上数据库的名称也一样,mater库里面有这个函数,加上数据库名调用一样报错,我换到其他普通的库,报的错一样找不到列 "KJCG" 或用户定义的函数或聚合 "KJCG.dbo.f_split",或者名称不明确。
#5
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
#6
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
那应该怎么调用,select * FROM f_split(应用行业代码,';') 这样吗,那表名应该写在哪?
#7
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
那应该怎么调用,select * FROM f_split(应用行业代码,';') 这样吗,那表名应该写在哪?
我看你是想用个拼接是吧?
那你可以试下这样写
select *
FROM [master].[dbo].[分列测试] a
cross apply f_split(a.应用行业代码,';') as b
#8
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
那应该怎么调用,select * FROM f_split(应用行业代码,';') 这样吗,那表名应该写在哪?
我看你是想用个拼接是吧?
那你可以试下这样写
select *
FROM [master].[dbo].[分列测试] a
cross apply f_split(a.应用行业代码,';') as b
确实是想要拼接,谢谢
#9
--看看这个函数的所有者是谁,一般是dbo
select dbo.f_split()
select dbo.f_split()
#1
你用的是master库里面的函数,你把master去掉看看
#2
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
#3
你看看你新建的函数f_split是建在哪个库 在函数之前加上 数据库名称.dbo.f_split
#4
你看看你新建的函数f_split是建在哪个库 在函数之前加上 数据库名称.dbo.f_split
这个我测试过了,加上数据库的名称也一样,mater库里面有这个函数,加上数据库名调用一样报错,我换到其他普通的库,报的错一样找不到列 "KJCG" 或用户定义的函数或聚合 "KJCG.dbo.f_split",或者名称不明确。
#5
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
#6
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
那应该怎么调用,select * FROM f_split(应用行业代码,';') 这样吗,那表名应该写在哪?
#7
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
那应该怎么调用,select * FROM f_split(应用行业代码,';') 这样吗,那表名应该写在哪?
我看你是想用个拼接是吧?
那你可以试下这样写
select *
FROM [master].[dbo].[分列测试] a
cross apply f_split(a.应用行业代码,';') as b
#8
你用的是master库里面的函数,你把master去掉看看
没有用,还是报错'f_split' 不是可以识别的 内置函数名称。
不好意思,粗心看错了,你定义的是一个表值函数哦,怎么能放在列名里面呢。
那应该怎么调用,select * FROM f_split(应用行业代码,';') 这样吗,那表名应该写在哪?
我看你是想用个拼接是吧?
那你可以试下这样写
select *
FROM [master].[dbo].[分列测试] a
cross apply f_split(a.应用行业代码,';') as b
确实是想要拼接,谢谢
#9
--看看这个函数的所有者是谁,一般是dbo
select dbo.f_split()
select dbo.f_split()