高级T-SQL进阶系列 上篇(使用 APPLY操作符)

逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述高级T-SQL进阶系列 上篇:使用 APPLY操作符相关的知识,希望能为你提供帮助。
使用OUTER APPLY 操作符
 
OUTER APPLY操作符工作起来和CROSS APPLY比较类似。唯一的不同在于OUTER APPLY操作符对于那些从表值函数不返回任何数据行的列仍旧会返回结果集。为了看其是如何工作的我们可以查看列表3的代码。

USE tempdb; GO SELECT* FROMdbo.SearchString AS S OUTER APPLY dbo.FindProductLike(S.String);

  列表3:OUTER APPLY示例
  当我运行列表3的代码,将得到报告2的输出结果。
IDStringProductNamePrice ----- ---------------- -------------------------- --------- 1RedRed Santa Suit199.99 1RedRed Bells49.99 2LightsLED Lights6.99 3StarNULLNULL

  报告2:通过运行列表3的代码产生的输出
通过使用OUTER APPLY操作符,你可以看到对于字符串值“ Star” ,存在一个数据行,其ProductName列和Price列均为Null值。这是因为SearchString表的字符串值“ Star” 并没有发现是Product表的任何ProductName列的一部分。当表值函数dbo.FindProductLike使用了列值而返回了一个空的数据行集时,SQL SERVER便会对表值函数产生的数据列赋以null值。OUTER APPLY操作符的这个功能类似与当在两个表之间使用OUTER JOIN而并没有匹配行的情形。当一个字符串传递给表值函数dbo.FindProductLike并确实返回数据行时,那么SearchString表的数据行便会与表值函数的结果进行关联,如果一个CROSS APPLY操作符被使用的时候发生的一样。
使用一个表值表达式
【高级T-SQL进阶系列 上篇(使用 APPLY操作符)】 

    推荐阅读