这个问题在这里已经有答案了:
在where子句的字符串列表中分析逗号分隔的字符串(3个答案)
10个月前关门了。
我在表x中有下面的一列,其中sharedbagsids包含字符串(1,3,4)
我正在尝试编写一个包含in子句的sql查询,如下所示
select * from .... where id in (x.SharedBagsIds)
但是这条线 id in (x.SharedBagsIds)
正在生成错误 Conversion failed when converting the varchar value '1,3,4' to data type int.
有办法解决这个问题吗?
2条答案
按热度按时间a8jjtwal1#
这不是
IN
子句,并且您正在比较一个整数(您的id
)到字符串('1,3,4'
). 您需要将列值拆分为多个值,然后检查id是否与以下任何值匹配:看看这个答案。
或者考虑将sharedbagsid提取到自己的表中,在数据库字段中存储逗号分隔的值并不理想。
unguejic2#
你的表格不是第一范式,即每个单元格都应该是原子的sharedbagsids'包含多个值,应始终避免使用这些值。阅读sql中的多对多关系,并相应地修改表。
假设我有一个表teacher和另一个表student,然后为了显示它们之间的关系,创建另一个表,其中包含teacherid和studentid作为复合主键。因此,您可以显示单个Map,而无需在单个单元格中放置多个ID,如1、3、4。
希望这有帮助。