我有这个查询,它的工作对我来说很好
SELECT STUFF(
(SELECT ','+SLT_SubListName FROM sublists where SLT_SubListId in (1,2) FOR XML PATH('')),1,1,'');
但当我将in参数(1,2)更改为时,从订阅者中选择SBS_SubListId,其中SBS_SubscriberId = 1' 这也返回 1,2
SELECT STUFF(
(SELECT ','+SLT_SubListName FROM sublists where SLT_SubListId in (select SBS_SubListId from subscriber where SBS_SubscriberId=1
) FOR XML PATH('')),1,1,'');
它给我的错误是以下
将varchar值'1,2,4,5'转换为数据类型int。
时转换失败如果有人需要我也可以在这里发布我的表架构。 谢谢
答案 0 :(得分:0)
您必须先在逗号基础上拆分这些逗号分隔值,然后应用转换。
答案 1 :(得分:0)
我怀疑你的子查询返回的是一个“1,2,4,5”的条目,它不是一个整数。您需要让它返回4行,每行包含其中一行。
如果你这样做 - 显示子查询的结果 - 那么你可能有类型差异。
答案 2 :(得分:0)
由于您的子查询似乎返回了varchar'1,2,4,5',您可以使用CONTAINS尝试查询:
SELECT STUFF(
(SELECT ','+SLT_SubListName FROM sublists where CONTAINS((select SBS_SubListId from subscriber where SBS_SubscriberId=1), SLT_SubListId
) FOR XML PATH('')),1,1,'');
这样它将子查询的结果视为文本。