伯乐共勉

讨论。NET专区
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

自定义函数用于group by时出错

Posted on 2005-05-17 14:26  伯乐共勉  阅读(390)  评论(0)    收藏  举报

-- zjcxc

/**==** 1. 自定义函数用于group by时出错 **==**/
--一个简单的函数
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

select substring(name, 1, 1), substring(name, 2, 1)
from @t
group by substring(name, 1, 1), substring(name, 2, 1)
go

--删除测试的自定义函数
drop function f_str