34,590
社区成员
发帖
与我相关
我的任务
分享
DECLARE @str VARCHAR(max)
,@seperator VARCHAR(max)
SELECT @str = '1,2,3,4,15,6,237'
,@seperator = ','
DECLARE @tbl_split TABLE (
str_id varchar(max) NOT NULL
,string varchar(max) NOT NULL
)
DECLARE @strlen INT
--,@start INT
,@position INT
,@start INT
,@sublen INT
,@tempstr VARCHAR(max)
,@tempid INT
SELECT @strlen = LEN(@str)
,@start = 1
,@sublen = 0
,@position = 1
,@tempstr = ''
,@tempid = 0
IF RIGHT(@str,1)<>@seperator
BEGIN
SELECT @str = @str+@seperator
END
WHILE (@position<=@strlen AND @position!=0 )
BEGIN
IF(CHARINDEX(@seperator,@str,@position)!=0)
SELECT @sublen=CHARINDEX(@seperator,@str,@position)-@position
ELSE
SELECT @sublen =@strlen-@position+1;
IF @position<=@strlen
BEGIN
SELECT @tempid= @tempid +1
,@tempstr =SUBSTRING(@str,@position,@sublen)
INSERT INTO @tbl_split(str_id,string)
VALUES(@tempid,@tempstr)
IF(CHARINDEX(@seperator,@str,@position)!=0)
SELECT @position=CHARINDEX(@seperator,@str,@position)+1
END ELSE
SELECT @position=@position+1
END
SELECT * FROM @tbl_split
declare @t nvarchar(200)
set @t = '''2'',''10'',''9'',''11'
declare @sql nvarchar(2000)
set @sql='select * from BaseArchives where jzdw in ('+replace (@t,'''','')+' )'
print @sql
exec @sql
select * from BaseArchives where jzdw in ('2','10','9',11')