【发布时间】:2010-11-27 09:34:55
【问题描述】:
我有表类别 (c) 和另一个表 (x),其中的一列可以包含用逗号分隔的猫 ID 作为 varchar 数据类型。我想选择相关类别,但出现错误“将 varchar 值 '5' 转换为数据类型 int 时转换失败。”尝试选择时:
SELECT ID, Title FROM c WHERE ID IN (SELECT catIDs FROM x WHERE ID=any);
子查询返回类似“1,3,4”的数据
【问题讨论】:
-
如果将 WHERE ID IN 替换为 WHERE CAST(ID as varchar(5)) IN 会发生什么?
-
我同意@Traroth - 作为逗号分隔值字符串返回的 ID 列表表明数据库设计存在问题。
x表中真的有catIDs列吗?或者这只是一个示例,1,3,4实际上是从存储的 rpocedure 返回或从平面文件中检索的? -
@Carnotaurus:它正在工作但没有返回正确的结果,因为它正在寻找'x,y',而不是'x','y'
-
不错的@Carnotaurus,而不是将您的选择结果转换为int,而是将ID值转换为varchar。像魅力一样工作。
标签: sql sql-server sql-server-2005 tsql