日期:2014-05-17  浏览次数:20361 次

求这个MSSQL怎么写啊。
数据库有记录
id goodid
1  11
2  23
3  35
现在有一个goodid数据
string goodidArr="17,23";
如果数据库不存在该ID则返回该ID,存在的不返回
结果要求返回17,这个SQL怎么写啊。

------解决方案--------------------
declare @r varchar(1000)
select @r = '17,23,123,35,232'
select @r = ',' + @r + ','
select @r = replace(@r, ',' + goodid + ',', ',') from tb
print @r
------解决方案--------------------

--> 测试数据:@T
declare @T table([id] int,[goodid] int)
insert @T
select 1,11 union all
select 2,23 union all
select 3,35 UNION ALL
SELECT 4,46 UNION ALL
SELECT 5,58 

DECLARE @p VARCHAR(30) 
SET @p = '17,23,47,58'

SELECT  [goodid]
FROM    @T
WHERE   CHARINDEX(',' + LTRIM([goodid]) + ',', ',' + @p + ',') > 0

/*
goodid
-----------
23
58
*/

--可以得到23,58,从@p中去掉这两个就是你要的结果了。