查询语句的in问题,在外部程序里挺简单,但在查询分析器里好象比较难弄~
表: 字段
t1: f1 varchar(20)
t2: id int
t1的f1字段存放t2 id 的逗号分割字符串
比如
t1中有一条记录的f1为 12,13
我想由t1关联到t2,使用以下语句.
select * from t2 where id
in (select f1 from t1 where ... )
问题来了:
12,13
服务器: 消息 245,级别 16,状态 1,行 4
将 varchar 值 '12,13 ' 转换为数据类型为 int 的列时发生语法错误。
我想,它一定是解析成了
select * from t2 where id in ( '12,13 ' )
而不是 我要的select * from t2 where id in ( 12,13 )
请问有什么办法(在不改变字段类型的情况下)解决,多谢
------解决方案--------------------select * from t2 where charindex( ', '+rtrim(id)+ ', ' , ', '+ '12,13 '+ ', ')
------解决方案--------------------Select T2.* From T2
Inner Join T1
On CharIndex( ', ' + Rtrim(T2.id) + ', ', ', ' + T1.f1 + ', ') > 0
Where ...