SQL Server 2005学习总结:APPLY 运算符(一)

日期: 2008-08-20 作者:aierong 来源:TechTarget中国 英文

  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

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

aierong
aierong

相关推荐