SQL SERVER字符串处理

本文介绍在SQL Server中如何通过自定义函数实现字符串的拆分及查找子字符串的存在性检查。首先,提供了一个split函数用于将字符串按指定分隔符拆分为类数组结构;其次,通过CGF_FN_Search函数演示了如何判断一个字符串集合中的元素是否存在于另一个字符串内。

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

使用数据库处理字符串的时候,诸如将实现字符串的split函数,以及两个字符串是否包含某些相同的部分,诸如此类。网上相关文章:sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符

1、将字符串按分隔符截取为类数组。实现方式:根据分割符,找到分隔符在主串中的位置,然后根据位置,截取主串前面的部分,存入表,将后面的部分赋值给主串,如此循环往复,直至结束。

CREATE function split(  
    @string varchar(255),--待分割字符串  
    @separator varchar(255)--分割符  
)returns @array table(item varchar(255))  
as  
begin  
    declare @begin int,@end int,@item varchar(255)  
    set @begin = 1  
    set @end=charindex(@separator,@string,@begin)  
    while(@end<>0)  
    begin  
        set @item = substring(@string,@begin,@end-@begin)  
        insert into @array(item) values(@item)  
        set @begin = @end+1  
        set @end=charindex(@separator,@string,@begin)  
    end  
    set @item = substring(@string,@begin,len(@string)+1-@begin)  
    if (len(@item)>0)  
        insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))  
    return  
end 

2、实现方式: 实现方式与上面差不多,仍然依靠根据将字符串截取的方式。如看字符串‘ASDF,DFG' 是否存在非空字串{'ASDF','DFG'}在字符串'STR,ASD,DSGF,DFG' 里面。开始将字符串‘ASDF,DFG'根据截取,然后匹配。。。

SELECT dbo.CGF_FN_Search('STR,ASD,DSGF,DFG','ASDF',',');

CREATE FUNCTION CGF_FN_Search(@inStr VARCHAR(500),@fndStr VARCHAR(500),@doc VARCHAR(5))
	RETURNS INT
AS
BEGIN
	DECLARE 
		@i 					INT,
		@c 					VARCHAR(500),
		@fStr 			VARCHAR(500)
	SET @fStr = @fndStr
	WHILE(LEN(@fStr) > 0)
		BEGIN
			SET @i = Charindex(@doc, @fStr)
			IF(@i = 0)
				BEGIN
					IF(CHARINDEX(@fStr,@inStr) > 0)
						RETURN 1
					ELSE
						RETURN 0
				END
			ELSE
				BEGIN
					SET @c = SUBSTRING(@fStr,1,@i-1)
					IF(CHARINDEX(@c,@inStr) > 0)
						RETURN 1
					ELSE
						SET @fStr = SUBSTRING(@fStr,@i+LEN(@doc),LEN(@fStr))
				END
		END
	RETURN 0
END 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值