sql 按符号拆分字符串

本文介绍了如何在SQL中使用内置函数将字符串按照指定的分隔符进行拆分,详细讲解了不同数据库系统(如MySQL, SQL Server, Oracle等)的实现方法,为数据处理提供了有效工具。" 111388105,10326446,SQL注入:从左侧截取与盲注技术详解,"['SQL Server', '安全', '数据库', 'Web安全', 'SQL盲注']

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

单行的数据可以直接用表值函数
Create FUNCTION [dbo].[F_Split]
  (
      @SplitString nvarchar(max),  --源字符串
      @Separator nvarchar(10)=' '   --分隔符号,默认为空格
  )
  RETURNS @SplitStringsTable TABLE  --输出的数据表
  (
      [id] int identity(1,1),
     [value] nvarchar(max)
  )
  AS
  BEGIN
      DECLARE @CurrentIndex int;
      DECLARE @NextIndex int;
      DECLARE @ReturnText nvarchar(max);
 
      SELECT @CurrentIndex=1;
      WHILE(@CurrentIndex<=len(@SplitString))
          BEGIN
              SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
              IF(@NextIndex=0 OR @NextIndex IS NULL)
                  SELECT @NextIndex=len(@SplitString)+1;
                  SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
                  INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
                  SELECT @CurrentIndex=@NextIndex+1;
              END
      RETURN;
  END

GO

调用的时候
select * from dbo.F_Split('''+@DJBH+''','';'')






如果是多行的数据集
create table test
( code varchar(10),
 single_No varchar(100))

insert into test(code,single_No)
select '001','201801001;201801004;'
union
select '002','201801002;'

select * from test




;with temp as 
( select a.code,a.single_No, charindex(';',a.single_No) as start, charindex(';',a.single_No)-1 as lenth
  from test a
  union all
  select b.code,b.single_No,charindex(';',b.single_No,start+1), charindex(';',b.single_No,start+1)-start-1 as lenth
  from temp b 
  where start<>0
)
select substring(single_No,start -lenth,lenth) as obj, code 
from temp
where (start <> 0)
order by code 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值