SQL Server中是否有数组数据类型的替代方案?

6

PostgreSQL允许将表的列定义为可变长度的多维数组。就像这样:

CREATE TABLE sal_emp 
(
    name            text,
    pay_by_quarter  integer[],
    schedule        text[][]
);

以下是一些INSERT语句示例:

INSERT INTO sal_emp
VALUES ('Bill', '{10000, 10000, 10000, 10000}',
        '{{"meeting", "lunch"}, {"training", "presentation"}}');

INSERT INTO sal_emp
VALUES ('Carol', '{20000, 25000, 25000, 25000}',
        '{{"breakfast", "consulting"}, {"meeting", "lunch"}}');

SELECT * FROM sal_emp;

输出:

 name  |      pay_by_quarter       |                 schedule
-------+---------------------------+-------------------------------------------
 Bill  | {10000,10000,10000,10000} | {{meeting,lunch},{training,presentation}}
 Carol | {20000,25000,25000,25000} | {{breakfast,consulting},{meeting,lunch}}
(2 rows)

我们如何在SQL Server或其任何替代品中实现相同的功能?

在 MS SQL 中没有等效的替代方案。只有在最新版本中才支持 JSON https://msdn.microsoft.com/en-us/library/dn921897.aspx。 - Ivan Starostin
1
@IvanStarostin ...还有XML(自SQL Server 2005起) :-) - Shnugo
1
Muahmmad,即使这可能被支持,我仍然认为这是不好的设计。这种依赖列表应该存在于1:n相关的边缘表中... 这个概念有一种懒散的味道 :-) - Shnugo
2
@Shnugo 在Postgres中,这不是通过“侧表”完成的。它是单个,可压缩的可变长度数据结构。任何属性,您始终读取和写入整个数组(以进行应用程序中的进一步处理),但从SQL内部永远不需要访问单个元素的情况都有可能成为此类候选项(但再次强调:所显示的示例是一个好选择的有效示例。我完全同意所显示的信息不应该存储在数组中 - 即使在Postgres中也不应该)。 - user330315
阅读了SQL Server文档 https://msdn.microsoft.com/en-us/library/ms187752.aspx 后,我没有找到任何替代方案。感谢大家的支持.........! - Muhammad Iqbal
显示剩余8条评论
1个回答

2
在SQL Server中,数组数据类型没有替代方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接