Sql中将字符串按分割符拆分

1
创建函数
复制代码
 1 SET ANSI_NULLS ON
 2 GO
 3 
 4 SET QUOTED_IDENTIFIER ON
 5 GO
 6 
 7 Create FUNCTION [dbo].[F_Split]
 8  (
 9      @SplitString nvarchar(max),  --源字符串
10      @Separator nvarchar(10)=' '  --分隔符号,默认为空格
11  )
12  RETURNS @SplitStringsTable TABLE  --输出的数据表
13  (
14      [id] int identity(1,1),
15      [value] nvarchar(max)
16  )
17  AS
18  BEGIN
19      DECLARE @CurrentIndex int;
20      DECLARE @NextIndex int;
21      DECLARE @ReturnText nvarchar(max);
22 
23      SELECT @CurrentIndex=1;
24      WHILE(@CurrentIndex<=len(@SplitString))
25          BEGIN
26              SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
27              IF(@NextIndex=0 OR @NextIndex IS NULL)
28                  SELECT @NextIndex=len(@SplitString)+1;
29                  SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
30                  INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
31                  SELECT @CurrentIndex=@NextIndex+1;
32              END
33      RETURN;
34  END
35 GO
复制代码

 

  使用:

1
select * from F_Split('1,2,3,4,5',',')

  

1
select * from tb_SysUser u where u.ID in (select value from dbo.F_Split('1,2,3,4',','))

  

posted @   我不是CC  阅读(36051)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示