/**==** 1. 自定义函数用于group by时出错 **==**/
--一个简单的函数
create function f_str(@str sysname,@i int)
returns char(1)
as begin
return(substring(@str,@i,1))
end
go
--一个简单的函数
create function f_str(@str sysname,@i int)
returns char(1)
as begin
return(substring(@str,@i,1))
end
go
--下面是测试
--定义测试数据
declare @t table(name sysname)
insert into @t values('abcd')
--有group by的情况,结果错误
select a=dbo.f_str(name,1),b=dbo.f_str(name,2)
from @t
group by dbo.f_str(name,1),dbo.f_str(name,2)
--无group by的情况,结果正确
select a=dbo.f_str(name,1),b=dbo.f_str(name,2)
from @t
go
--删除测试的自定义函数
drop function f_str
/*--测试结果
a b
---- ----
a a
(所影响的行数为 1 行)
a b
---- ----
a b
(所影响的行数为 1 行)
--*/
博客展示了SQL Server中自定义函数的测试过程。先定义测试数据,分别测试有group by和无group by情况下自定义函数的结果,最后删除测试的自定义函数,并给出了测试结果。
1090

被折叠的 条评论
为什么被折叠?



