where id in (...)
我想做一个查询,可以查询多条记录。
类似于这样:
select * from tblA where id in ('00001','00003','00008')select * from tblA where id in ('00001,00003,00008') declare @s1 varchar(1000) set @s1=right(replace(','+@s,',',''' as S union select '''),len(replace(','+@s,',',''' as S union select '''))-12)+'''' exec(@s1)
[解决办法]
替换, 变成','
[解决办法]
--用临时表作为数组create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)<>0) begin insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) set @c = stuff(@c,1,charindex(@split,@c),'') end insert @t(col) values (@c) return end go select * from dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',') drop function f_split col -------------------- dfkd dfdkdf dfdkf dffjk (所影响的行数为 4 行)
[解决办法]
这样不行吗 将,替换成',' 转义失败?
where id in (replace(@id,',',''',''')
[解决办法]
SELECT ''''+REPLACE('1,2,3,5,6',',',''',''')+''''--结果为 '1','2','3','5','6'
[解决办法]
--select * from tblA where id in ('00001,00003,00008')select * from tblA where charindex(','+ltrim(id)+',',','+'00001,00003,00008'+',')>0