怎么取出ID字符串放到查询语句中
怎样取出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)+',%')
------解决方案--------------------
表 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
*/