SQL 表值函数 做Split用

xiaoxiao2021-02-27  172

需求

传入字符串A,B,C,D,E

到SQL做 字段 in (A,B,C,D,E) 的时候,因为是字符串需要变成'A','B','C','D','E'

这样处理很麻烦

然后在SQL里面创建一个表值函数

USE [ZemtProcess] GO /****** Object:  UserDefinedFunction [dbo].[f_split]    Script Date: 06/06/2017 15:53:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER   function   [dbo].[f_split](@c   nvarchar(2000),@split   Nvarchar(2))      returns   @t   table(ID int,colName   Nvarchar(50))      as        begin          declare @i int       set @i=1       while(charindex(@split,@c)<>0)            begin              insert   @t(ID,colName)   values   (@i,substring(@c,1,charindex(@split,@c)-1))              set   @c   =   stuff(@c,1,charindex(@split,@c),'')              set @i=@i+1         end          insert   @t(ID,colName)   values   (@i,@c)          return        end        

使用的时候 select * from [dbo].[f_split]('A,B,C,D,E',',')

执行下输出结果就和查询表结果一样

ID    colName

1    A

2   B

最终SQL

字段 in (select  colName from [dbo].[f_split]('A,B,C,D,E',',') 

转载请注明原文地址: https://www.6miu.com/read-12376.html

最新回复(0)