如何从 SQL 表中提取 ID 列表作为逗号分隔值字符串?

新手上路,请多包涵

我必须仅使用符合某些条件的记录从表中提取整数 ID 列表。例如:

 Select ProdID From Products Where (ProdType='XYZ');

问题是我必须将它作为一组逗号分隔值返回,以便我可以使用它来选择多选列表中的项目:

 111,231,554,112

而不是作为记录。我不想在我的 C# 代码中执行此操作 - 我希望它通过这种方式从数据库中直接查询。有任何想法吗?

原文由 Mark Brittingham 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 502
2 个回答

除了@OMG Ponies 方法,您还可以尝试以下 COALESCE 技巧:

使用 COALESCE 构建逗号分隔的字符串

declare @string nvarchar(255)

select @string = coalesce(@string + ', ', '') + cast(prodid as nvarchar(5))
from products

原文由 Justin Niessner 发布,翻译遵循 CC BY-SA 2.5 许可协议

对于未来的 PostgreSQL 用户,请在下面找到解决方案(与 @Matt Tester 回答的相同。

 SELECT STRING_AGG(cast(id as varchar), ',') from table1
where col1 = 'ABC';

请注意,如果您选择的列不是字符串(或数据库术语中的 varchar),则需要强制转换。

原文由 Sam ツ 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进