日期:2014-05-16  浏览次数:20545 次

怎样取出ID字符串放到查询语句中?
表 T1
ItemID                     ItemName
   1                               hello
    2                              word

表T2
tid           IDString
 1                 1,2

我用语句:SELECT T1.* FROM T1 WHERE ITMEID IN (Select IDString from T2 WHERE TID=1)

结果报错,从数据类型 varchar 转换为 numeric 时出错。

有啥好的办法取出ID用作查询?
------解决方案--------------------
SELECT T1.* FROM T1 WHERE EXISTS( Select 1 from T2 WHERE TID=1 AND ','+T2.IDSTRING+',' LIKE '%,'+LTRIM(T1.ITMEID)+',%')


------解决方案--------------------

declare @T1 table([ItemID]  NUMERIC(18,0),[ItemName] varchar(5))
insert @T1
select 1,'hello' union all
select 2,'word'

declare @T2 table([tid] int,[IDString] varchar(3))
insert @T2
select 1,'1,2'

--SELECT T1.* FROM @T1 T1 WHERE [ItemID] IN (Select IDString from @T2 WHERE TID=1)
--Error converting data type varchar to numeric.

SELECT * FROM @T1 
WHERE CHARINDEX(','+LTRIM([ItemID])+',',','+(SELECT IDString from @T2 WHERE TID=1)+',')>0
/*
ItemID                                  ItemName
--------------------------------------- --------
1                                       hello
2                                       word
*/