SQL研究 - Apply
来源:互联网 发布:程序员穿着标配 编辑:程序博客网 时间:2024/06/11 12:44
Apply是SQL Server 2005引入的一个新操作符,具有如下的基本语法:
select *
from tableA apply table_func(...)
Apply左边表的每一行输入右边的函数,该函数根据输入返回一个表,最后输入表的每一行与表结合起来,形成了结果集。
有必要解释下表值函数,它是返回值为一个表的函数,请参考MSDN的相关文档。
现在先看看我们要解决的问题:
如果我们有一张表LocationLog,具有列Locations,内容示例如下:
JiangSu;BeiJing;Shanghai;
FuJian;ShanDong;JiangSu;
...
现在希望统计出各个省份出现的次数。
我们假设已经有这样一个函数,如后面附录所示,它能够将输入的一个长字符串分离成几个短字符串,如输入JiangSu;BeiJing;ShangHai,输出应该是:
1 JiangSu
2 BeiJing
3 ShangHa
该函数名字是splitString。使用Apply,我们可以这样解决问题:
select subStr,count(*)
from LocationLog cross apply dbo.splitString(locationRecord)
group by subStr
结果如下:
BeiJing 1
FuJian 1
JiangSu 2
ShanDong 1
Shanghai 1
为了方便读者,我也写出splitString的简单实现。
CREATE FUNCTION dbo.splitString
(
@strs nvarchar(1024),
@ch nchar = ';'
)
RETURNS @tmp TABLE
(
strId int identity(1,1),
subStr nvarchar(1024)
)
AS
begin
declare @pos int, @posX int
set @pos = 1
while( @pos < len(@strs) )
begin
set @posX = charindex(@ch,@strs,@pos)
if( @posX = 0) set @posX = len(@strs) + 1
insert into @tmp (subStr) values(substring(@strs,@pos,@posX-@pos))
set @pos = @posX+1
end
RETURN
end
GO
- SQL研究 - Apply
- SQL server Outer apply
- Sql中apply
- 监控sql apply过程
- SQL CROSS APPLY OUTER APPLY PIVOT UNPIVOT
- SQL Server cross apply 和outer apply
- SQL Server 2005 T-SQL cross Apply 与outer apply
- SQL:CROSS APPLY和OUTER APPLY的应用
- SQL Server CROSS APPLY和OUTER APPLY的应用详解
- sql server中的outer apply ,across apply 对应 oracle
- T-SQL Part VIII: CROSS APPLY, OUTER APPLY
- SQL Server 关于CROSS APPLY 和 OUTER APPLY应用
- SQL关于apply的两种形式cross apply和outer apply
- SQL 关于apply的两种形式cross apply 和 outer apply
- SQL 关于apply的两种形式cross apply 和 outer apply
- SQL 关于apply的两种形式cross apply 和 outer apply
- apply( )
- apply()
- IM发展史
- 游戏编程学习之项目历程
- 算法5.4 建立稀疏矩阵的十字链表.rar
- java如何清空数组
- 中国银联ATM终端界面设计
- SQL研究 - Apply
- Eclipse RAP 入门(五) 常见问题总结
- String Reverse using Substring
- CMMI基础知识扫盲
- WORD排版,要想做的好,请放弃使用格式工具栏
- 关于CSDN
- IM行业趋势
- 关于:没有工作经验就真的很难找工作吗?
- 在网页中加入QQ联系图标