跨服务器,标准 SQL 生成逗号分隔列表

Posted

技术标签:

【中文标题】跨服务器,标准 SQL 生成逗号分隔列表【英文标题】:cross server, standard SQL to produce a comma delimited list 【发布时间】:2012-08-26 17:54:47 【问题描述】:

我一直在寻找,但找不到任何东西。是否有一种符合 SQL 标准的方式来产生像 this TSQL 这样的输出?我想要一个在 sqlite、mysql、postgresql 或 sql server 上也能正常工作的查询。这样的事情可能吗?

【问题讨论】:

我不相信有一个跨平台的单一查询可以在所有这些数据库引擎中运行(顺便说一句,你可以在这里测试它:sqlfiddle.com)。但是,您可能会发现以下信息:simple-talk.com/sql/t-sql-programming/… 测试用例:SQL Server; MySQL; PostGre; SQLite 你提到的 DBMS 甚至不同意如何连接两个字符串 ... 【参考方案1】:

据我了解,您正在寻找一种跨数据库方式将列中的值聚合到逗号分隔的列表中。据我所知,没有标准的聚合可以做到这一点(在 PostgreSQL 上,在添加一些新聚合之前,我正在为此编写自己的聚合)。

您可以做的最好的事情是选择列表并在您的应用程序中处理它,但是当您必须编写跨数据库可移植的代码时就会发生这种情况。

您将遇到的第二个问题是,虽然可以向其中一些数据库添加扩展来解决此问题,但并非对所有数据库都可行。

所以不,不可能。您的选择是:坚持使用一两个支持自定义聚合和填充的数据库,在一个数据库上构建基于 SP 的界面,或者只选择列表并在您的应用程序中处理它。

【讨论】:

以上是关于跨服务器,标准 SQL 生成逗号分隔列表的主要内容,如果未能解决你的问题,请参考以下文章

跨服务器/用户收集 Cron Tab 条目

如何从 SQL CE 中的表中构建逗号分隔列表?

如何使用 XSLT/XPath 生成逗号分隔的列表?

如何使用 SQL 查询创建逗号分隔的列表?

阿里云ECS服务器跨账号无缝迁移

此查询对创建逗号分隔列表 SQL Server 做了啥?