SQL2005学习笔记-APPLY 运算符

(一)Tushare Pro教程:股票基本数据接口  一直使用tushare作数据源,这里开个教程大家一起学习。 一、介绍        tushare是一个python股票数据源,现已升级到tushare pro版本,新版本在数据稳定性和获取速率上大幅提升。与wind、东财等收费数据源相比,tushare pro算是金融数据界的良心之作,其为从事金融工程、量化研究等方向的同学们提供了便利。tushare pro还有一点突出的特色就是已经将股票... 阅读详情

APPLY 运算符简介: 
APPLY 运算符是Sql Server2005新增加的运算符。

使用APPLY运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。
表值函数作为右输入,外部表表达式作为左输入。
通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。
APPLY运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。

APPLY 运算符的左操作数和右操作数都是表表达式。
这些操作数之间的主要区别是:右操作数可以使用表值函数,从左操作数获取一个列作为函数的参数之一。左操作数可以包括表值函数,但不能以来自右操作数的列作为参数。

演示一下APPLY 运算符的用法:

--建一个表
CREATE TABLE MyData
(
  ids 
INT IDENTITY PRIMARY KEY,
  Data 
NVARCHAR(1000) 
)
go

--插入测试数据
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


开始使用APPLY 运算符:

SELECT m.ids, f.*
FROM MyData m CROSS APPLY fun_MyData(data) f
go
--结果
ids    id    value
2    1    a
2    2    b
2    3    c
3    1    q
4    1    i
4    2    p

SELECT m.ids, f.* 
FROM MyData m OUTER APPLY fun_MyData(data) f
go
--结果
ids    id    value
1    NULL    NULL
2    1    a
2    2    b
2    3    c
3    1    q
4    1    i
4    2    p


我们看到OUTER APPLY返回的结果行比CROSS APPLY多。
这一点有点象inner join(内部联接)和Left Outer Join(左外部联接)之间的关系.
其实APPLY有两种形式:CROSS APPLY 和 OUTER APPLY。
CROSS APPLY仅返回外部表中通过表值函数生成结果集的行。
OUTER APPLY既返回生成结果集的行,也返回不生成结果集的行,其中表值函数生成的列中的值为 NULL。


以上是sql2005的解决方案,下面我演示一下sql2000怎么解决这样的查询:
思路是:做个循环来逐个链接查询。


--sql2000版本
declare @ids int
select @ids =0
declare @data nvarchar(200)
select @data=''

--定义表变量临时存放数据
declare @tem table(
ids 
int,
id 
int,
value 
nvarchar(100)
)

DECLARE test_cursor CURSOR FOR 
SELECT ids, Data FROM  MyData
OPEN test_cursor
FETCH NEXT FROM test_cursor 
INTO @ids,@data
WHILE @@FETCH_STATUS = 0
begin
    
insert into @tem
    
select @ids,id,value
    
from dbo.fun_MyData(@data)
    
    
FETCH NEXT FROM test_cursor 
    
INTO @ids,@data
end
CLOSE test_cursor
DEALLOCATE test_cursor

select * from @tem

同样得到了结果,但是sql2000要利用循环,这样代码复杂,计算耗时。
让我们充分利用Sql Server2005新兵器:APPLY运算符给我们带来的简便快捷的运算方式吧.

手把手教你搭建离线语音助手:FunASR+DeepSeek+TTS保姆级教程 本文详细介绍了如何利用FunASR、DeepSeek和TTS技术搭建离线语音助手系统。从环境配置、模型部署到唤醒词检测优化、语音识别与语义理解联调,再到语音合成与系统集成,提供全链路实战教程。特别适合智能家居控制、企业内部知识问答等需要数据隔离的场景,实现高响应、低延迟的离线语音交互体验。 阅读详情

相关推荐

SAP FI模块实操:用F-28和F-32搞定客户回款与手动清账,别再让未清项报表一团糟

本文详细解析了SAP FI模块中F-28和F-32事务代码在客户回款与手动清账中的实操应用,帮助财务人员高效管理未清项报表。通过标准清账六步法和手动清账实战技巧,解决因操作不规范导致的账务混乱问题,提升应收账款管理效率。

weixin_30292843的博客 452

Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符

APPLY 运算符简介: APPLY 运算符是Sql Server2005新增加的运算符。使用APPLY运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。 APPLY 运算符的左操作数和右...

aierong 199

YOLOv8 轴承缺陷检测 使用YOLOv8进行训练、评估和可视化预测结果 包含1440张图片的轴承缺陷检测数据集 YOLO格式或XML格式

本文介绍了一个基于YOLOv8的轴承缺陷检测项目。数据集包含1440张图片,标注了4类缺陷(凹槽、凹陷、卡伤、划痕),按8:1:1比例划分为训练集(1152张)、验证集(144张)和测试集(144张)。标注文件支持YOLO格式和XML格式,可直接用于模型训练。项目实现了数据准备、模型训练、评估及可视化预测结果的全流程,使用YOLOv8n预训练模型进行50个epoch的训练,并提供了数据格式转换(XML转YOLO)的代码示例。最终模型可自动检测轴承表面缺陷,并保存预测结果。

OICQQ67658008的博客 1439

T-SQL中APPLY子句的用法详解

在使用sql进行多表查询时,我们经常使用到左连接(left join)来对左表进行扩展,此时,输入的左表和右表通过在两边指定字段进行匹配,如果指定的两个字段相等,则返回结果。逻辑上,我们可以理解为对左表进行一次基于行的遍历,为每一行在右表中找出匹配的所有行,返回结果集,最后将由左表每一行产生的结果集合并为最终的结果集;而cross apply的就好像是左连接的升级版本,只是这里的右表是函数或表达式...

此去亦是经年 1123

图像去雨:超详细手把手写 pytorch 实现代码(带注释)

占个坑,过几天来写

书山有路,学海无涯! 1万+

100天精通Python(基础篇)——第3天:运算符全解析(算术运算符、比较运算符、逻辑运算符、赋值运算符及其优先级规则)

100天精通Python(基础篇)——第3天:运算符全解析(算术运算符、比较运算符、逻辑运算符、赋值运算符及其优先级规则)

努力让自己发光,对的人才能迎着光而来 14万+

SqlServer中Apply的用法

从sqlserver2005开始,增加了表运算Apply。 看数据库版本: select @@version  设置兼容级别: alter database 数据库名  set compatibility_level=90   ---这个级别要注意下 有两种形式 :cross apply,outer apply. 语句格式为 : [左表达式]  {Cross | outer} apply

千江有水千江月,万里无云万里天 1356

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2622

SQL Server:APPLY操作符

SQL Server 中的APPLY操作符用于将表值函数(或子查询)与外部查询的每一行关联执行,生成组合结果。它类似于JOIN,但更灵活,尤其适用于需要为每一行动态计算结果的场景。APPLY和。

weixin_46182438的博客 669

【HALCON 25.11 + C#】 01:2026年工业机器视觉实战详解(从入门到精通)

2026年机器视觉市场规模将突破230亿美元,HALCON 25.11的革命性更新与C#的工业集成优势形成黄金技术栈。本文作为付费专栏开篇序章,聚焦“为什么现在必须学25.11+C#”的核心问题,通过真实工业案例、五项核心技术突破、联合编程架构优势及30篇系统学习路线,全方位论证其投资价值。读者将掌握持续学习、深度OCR加速等关键技能,获得可直接上产线的工业级代码资产与架构设计思维,解决柔性生产、边缘部署等核心痛点,成为具备技术溢价的机器视觉工程师。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1222

基于Simulink环境,提供一个关于如何对无人机电源DC-DC变换器进行仿真建模的示例

无人机电源要求:无人机的各个子系统(如电机、传感器、通信模块等)可能需要不同级别的电压供应。重要性稳定性:稳定的电源是保证无人机各部件正常工作的基础。效率:高效的电源管理可以显著增加飞行时间和任务执行能力。挑战多负载适应性:需要能够为不同负载提供合适的电压和电流。动态响应:快速响应负载变化的能力对于维持系统稳定性至关重要。首先明确要模拟的任务内容。设计一个能够在不同负载条件下为无人机提供稳定电压的DC-DC变换器。根据无人机的工作状态调整控制策略以维持最佳性能。

xiaoheshang_123的博客 135

MSSQL·APPLY关键字的学习理解

阅文时长 | 1.26分钟 字数统计 | 2027.2字符 主要内容 | 1、引言&背景 2、官方定义&示例 3、CROSS APPLY和CROSS JOIN是等价的吗?如果不等价的话,区别在哪里? 4、声明与参考资料 『MSSQL·APPLY关键字的学习理解』 编写人 | SCscHero 编写时间 | 2021/8/19 PM9:9 文章类型 | 系列 完成度 | 已完成 座右铭 每一个伟大的事业,都有一个微不足道的开始。 ..

SCscHero的博客 647

系统架构设计(以飞控系统、航电系统、机电管理系统、电子电气架构为例)

系统架构涉及对系统的结构和行为进行高层次的描述。它包括系统的组成部分、这些部分之间的关系、与外部环境的交互方式,以及满足特定功能和非功能性需求的方法。系统架构定义了系统的总体设计蓝图,指导系统的开发、集成、部署和维护。系统架构设计的目的是通过合理的结构和设计原则,确保系统能够高效、稳定、安全地运行,满足当前和未来的需求,同时具备良好的维护性、扩展性和可持续性。良好的系统架构不仅能够提高系统的开发效率和运行性能,还能降低长期的维护和运营成本,支持系统的持续演进和技术更新。

qq_41854911的博客 3052

SQLServer 2005 和游标cursor说再见——apply运算符

使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。  APPLY 有两种形式: CROSS APPLY 和 OUTER APPLY。CROSS APPLY 仅返回

ylqmf的专栏 7515

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SQL Server 2005 T-SQL Apply

SQL Server 2005 T-SQL Apply透过执行计划可以看出,cross apply类似不带where条件的连接即cross join 。形式上会灵活些. 使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入 。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符...

weixin_34337381的博客 185

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SQL Server 2005 T-SQL学习笔记:APPLY

SQL Server 2005 T-SQL学习笔记:APPLY 概念:使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最...

alieen_941124的博客 150

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SQL Server 2005 T-SQL cross Apply 与outer apply

SQL Server 2005 T-SQL Apply透过执行计划可以看出,cross apply类似不带where条件的连接即cross join (交叉连接即笛卡尔积:返回行数为:前表符合条件的行乘上后表符合条件的行) 。形式上会灵活些.使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获

deepwishly专栏 2422

mysql cross apply_SQL Server CROSS APPLY和OUTER APPLY的应用详解

SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能。新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行。它不像JOIN那样先计算那个表表达式都可以,APPLY必选先逻辑地计算左表达式。这种计算输入的逻辑顺序允许吧右表达式关联到左表表达式。APPLY有两种形式...

weixin_39747807的博客 675

SQL Server中以apply运算符简化join和子查询

 关系数据库中涉及多表操作会使查询变复杂。 多个表的查询,常用的操作方法就是使用表联接(join)或子查询。在sql server 2005中新增了apply运算符, 它能简化原来用join或子查询解决问题的方式。     示例, 系统有两个表, 一个文章表和一个文章评论表, 一对多的关系。 创建表结构代码         SQL code if object_id(

u013180028的博客 1663

sql server 2005中使用apply对每行调用表值函数

使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。 APPLY 有两种形式: CROSS APPLY 和 OUTER APPLY。CROSS APPLY 仅返回外部表

junmail的专栏 1540

SQL Server 2005 Beta 2 Transact-SQL 增强功能

Itzik Ben-GanSolid Quality Learning适用于:Transact-SQLMicrosoft SQL Server 2005 Beta 2摘要:该白皮书介绍了 Microsoft SQL Server 2005 Beta 2 中的 Transact-SQL 的几个新的增强功能。这些新功能可以改善您的表达能力、查询性能以及错误管理功能。本文重点介绍几个概念新颖

Teng_s2000的专栏 1739

SQL Server 2005 APPLY 运算符

APPLY运算符是Sql Server2005新增加的运算符。     使用APPLY运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。     表值函数作为右输入,外部表表达式作为左输入。     通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。     APPLY运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。

pingqingbo的专栏 331

浅析 SQL Server 的 CROSS APPLY 和 OUTER APPLY 查询 - 第一部分

你可能知道,SQL Server 中的 JOIN 操作用于联接两个或多个表。但是,在 SQL Server 中,JOIN 操作不能用于将表与表值函数的输出联接起来。如果你没有听说过表值函数,这些函数是以表的形式返回数据。为了连接两个表表达式,SQL Server 2005 引入了 APPLY 运算符。在本篇文章中,我们将了解 APPLY 运算符与常规 JOIN 的不同之处。......

Navicat 官方账号 2457

【个人学习笔记9之--TOP 和APPLY 】

 这篇来说说TOP 和APPLY 1.TOP一般来说 我们的TOP 和 ORDER BY 是一起连用的 这样可以返回确定的行 你可以看做是一个筛选器,可以再表表达式中使用。SQL 2005 TOP 后面支持连接 变量 算术表达式 子查询结果. 在2000里 只支持后面具体数字 如果想在2000中使用类似TOP (@n)的功能 参考http://blog.youkuaiyun.com/feixianxxx/

飞轩亭 2722

SQL关于apply的两种形式cross apply和outer apply

SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能。新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行。它不像JOIN那样先计算那个表表达式都可以,APPLY必选先逻辑地计算左表达式。这种计算输入的逻辑顺序允许吧右表达式关联到左表表达式。 APPLY有两种形式,一个是OUTER APPLY,一个是CROSS APPLY,区别在于指定OUTER,

felixfeng的专栏 1万+
上一篇: SQL2005学习笔记-EXCEPT和INTERSECT运算符
下一篇: SQL2005学习笔记-公用表表达式(CTE)
sql_help
博客等级 码龄19年 8粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值