最近项目调取存储的时候直接传入string 作为in的查询范围,结果报错了,深思之后才发现,数据库对于传进来的String,并不是我们想的直接可以作为参数,而是作为一个整体,而in是需要一个类似array或者list的参数,为此,需要一个拆分string的sql 函数,还好之前的前辈留下了可以用的,稍微修改一下就可以了,下面来看看这个函数
1 FUNCTION f_split 2 ( 3 -- Add the parameters for the function here 4 @SourceStr VARCHAR(max),@SeprateStr VARCHAR(10) 5 ) 6 RETURNS @temp TABLE (a VARCHAR(1000)) 7 AS 8 BEGIN 9 DECLARE @i INT 10 SET @SourceStr = RTRIM(LTRIM(@SourceStr))--去除空格 11 SET @i=CHARINDEX(@SeprateStr,@SourceStr) 12 WHILE @i>=1 13 BEGIN 14 INSERT @temp 15 ( a ) 16 VALUES ( LEFT(@SourceStr,@i-1) -- a - varchar(1000) 17 ) 18 SET @SourceStr = SUBSTRING(@SourceStr,@i+1,LEN(@SourceStr)-@i) 19 SET @i=CHARINDEX(@SeprateStr,@SourceStr) 20 END 21 RETURN 22 END 23 GO
应该写的很清晰了,就不细说了,欢迎大家指导