逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述高级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操作符)】
推荐阅读
- 小记--------spark的Master的Application注册机制源码分析及Master的注册机制原理分析
- 微信小程序获取二维码(直接上代码)https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN
- Taro自定义Modal对话框组件|taro仿微信android弹窗
- Android外接USB扫码枪
- Androidkiller在夜神模拟器上编译安装
- 笔记本经常见故障处理办法大全
- 10招处理打印机无法打印故障
- 喷墨打印机颜色精确匹配运用技巧
- 36招搞定电脑一切难题