SQL 中传数组参数的变通方法:通过字符串分拆实现

本文介绍了一个用于SQL的用户定义函数,该函数可以将输入的字符串按照指定的分隔符进行分拆,并返回一个表格形式的结果。此外,还提供了如何使用此函数的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串分拆函数:

/****** 对象:  UserDefinedFunction [dbo].[Split]    脚本日期: 04/23/2007 16:02:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
--
 Author:        Librading
--
 Create date: 
--
 Description:    字符串分拆函数
--
 =============================================
CREATE FUNCTION [dbo].[Split]
(
    
@Input varchar(4000), -- 输入字符串
    @Separator varchar(4000= ',' -- 分隔符
)
RETURNS 
@Result TABLE 
(
    Value 
varchar(4000)
)
AS
BEGIN

DECLARE @InputLength int;
SET @InputLength = LEN(@Input);
DECLARE @SeparatorLength int;
SET @SeparatorLength = LEN(@Separator);
DECLARE @LastIndex int;
SET @LastIndex = 0;
DECLARE @CurrentIndex int;
SET @CurrentIndex = -1;

WHILE @CurrentIndex != 0
BEGIN
    
SET @CurrentIndex = CHARINDEX(@Separator@Input@LastIndex );

    
IF @CurrentIndex != 0
        
INSERT @Result
        (
            Value
        )
        
VALUES
        (
            
SUBSTRING(@Input@LastIndex@CurrentIndex - @LastIndex)
        )
    
ELSE
        
INSERT @Result
        (
            Value
        )
        
VALUES
        (
            
SUBSTRING(@Input@LastIndex@InputLength + 1 - @LastIndex)
        )

    
SET @LastIndex = @CurrentIndex + @SeparatorLength;
END

RETURN 

END

 使用例子:

1、简单的例子:

select * from dbo.Split('a,b,c'',');

2、拆分后的表作为 int 或者其他数据类型而不是字符串:

DECLARE @Table TABLE
(
    ID 
int
);

INSERT @Table SELECT * FROM [dbo].[Split]('1---2---3---4---5''---');

SELECT * FROM @Table;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值