APPLY运算符是Sql Server2005新增加的运算符。
使用APPLY运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。
表值函数作为右输入,外部表表达式作为左输入。
通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。
APPLY运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。
APPLY 运算符的左操作数和右操作数都是表表达式。
这些操作数之间的主要区别是:右操作数可以使用表值函数,从左操作数获取一个列作为函数的参数之一。左操作数可以包括表值函数,但不能以来自右操作数的列作为参数。
演示一下APPLY 运算符的用法:
–建一个表
–插入测试数据
insert INTO MyData VALUES(’’) insert INTO MyData VALUES(’a,b,c’) insert INTO MyData VALUES(’q’) insert INTO MyData VALUES(’i,p’) GO select * from MyData go |
–查询结果
ids Data 1 2 a,b,c 3 q 4 i,p |
建立一个表,作用是:按逗号分解字符,分解出的每一个字符做一行数据返回
create FUNCTION fun_MyData( @data AS NVARchar(1000) ) RETURNS @tem TABLE( id INT , value nvarchar(100) ) AS BEGIN select @data=isnull(@data,’’) if len(@data)=0 return –字符长度为0 ,退出 declare @id AS INT select @id=1 declare @end AS INT select @end = charINDEX(’,’, @data) while(@end>0) begin insert into @tem(id,value) select @id,left(@data,@end-1) select @id=@id+1 select @data=right(@data,len(@data)-@end) select @end = charINDEX(’,’, @data) end if len(@data)>0 begin insert into @tem(id,value) select @id,@data end RETURN END |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
SQL Server 2005支持服务结束 升级何去何从
SQL Server 2005的支持就要结束了,就在2016年4月12日,SQL Server 2005的客户们应该升级了。
-
SQL Server 2005即将终止服务 你准备好了么?
2016年4月12日,微软将正式终止SQL Server 2005相关服务。微软正在终止扩展支持,这意味着不再有新特性更新,什么都没了。
-
解决SQL服务器提示属性IsLocked不可用于登录用户的错误
在SQL Server中,权限的分配很重要。特别是在用户数量众多的数据库里面,用户权限,架构的划分经常会导致权限之间的冲突,导致无法登陆。
-
TT数据库特别推荐:SQL Server编年史
无论是菜鸟还是资深DBA,除了要掌握基本的数据库管理、操作之外,还需要对不同产品的发展历史有一个了解。