SQLServer中Common Table Expressions_CTE 表达式

 use adventureWorks
Go
with SalesCTE(ProductID,SaleOrderID)
as
(
 select ProductID,COUNT(SaleOrderID)
 from Sales.SalesOrderDetails
 Group by ProductID
)

select * from SalesCTE

--递归调用
create database demo4
go
use demo4
go
create table CarParts
(
 CarID int not null,
 Part varchar(15),
 SubPart varchar(15),
 Qty int
)

insert into CarParts
values(1,'Body','Door',4)
insert into CarParts
values(1,'Body','Trunk Lid',1)
insert into CarParts
values(1,'Body','Car Hood',1)
insert into CarParts
values(1,'Door','Handle',1)
insert into CarParts
values(1,'Door','Lock',1)
insert into CarParts
values(1,'Door','Window',1)
insert into CarParts
values(1,'Body','Rivets',1000)
insert into CarParts
values(1,'Door','Rivets',100)
insert into CarParts
values(1,'Door','Mirror',1)
go

select * from CarParts
go

with CarPartsCTE(SubPart,Qty)
as
(
 select SubPart,Qty
 from CarParts
 where Part = 'Body'
 union all
 select CarParts.SubPart,CarPartsCTE.Qty * CarParts.Qty
 from CarPartsCTE
 inner join CarParts on CarPartsCTE.SubPart = CarParts.Part
 where CarParts.CarID = 1

select SubPart,SUM(Qty) AS total from CarPartsCTE group by SubPart

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server本身并不直接支持正则表达式的功能。但是可以通过使用CLR(Common Language Runtime)来扩展SQL Server的功能,从而实现正则表达式的使用。 以下是一种使用CLR扩展实现正则表达式的方法: 1. 创建一个CLR程序集,其包含正则表达式的逻辑。可以使用C#或VB.NET编写CLR程序集。 2. 将CLR程序集部署到SQL Server。 3. 在SQL Server创建一个存储过程或函数,该存储过程或函数调用CLR程序集的方法来执行正则表达式匹配。 下面是一个示例,演示如何在SQL Server使用正则表达式: 1. 创建CLR程序集: ```csharp using System; using System.Data.SqlTypes; using System.Text.RegularExpressions; using Microsoft.SqlServer.Server; public class RegexFunctions { [SqlFunction] public static SqlBoolean RegexMatch(SqlString input, SqlString pattern) { if (input.IsNull || pattern.IsNull) return SqlBoolean.Null; return Regex.IsMatch(input.Value, pattern.Value); } } ``` 2. 将CLR程序集部署到SQL Server: ```shell CREATE ASSEMBLY RegexFunctions FROM 'C:\Path\To\RegexFunctions.dll' WITH PERMISSION_SET = SAFE; ``` 3. 创建存储过程或函数来调用CLR程序集的方法: ```sql CREATE FUNCTION dbo.RegexMatch(@input NVARCHAR(MAX), @pattern NVARCHAR(MAX)) RETURNS BIT AS EXTERNAL NAME RegexFunctions.RegexMatch; ``` 现在,你可以在SQL Server使用`dbo.RegexMatch`函数来执行正则表达式匹配。例如: ```sql SELECT dbo.RegexMatch('/Book/103.aspx', '/book/(\d+).aspx') AS MatchResult; ``` 这将返回一个布尔值,指示输入字符串是否与正则表达式模式匹配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值