以编程方式将多个 SQL 列组合并存储到一个列中

Posted

技术标签:

【中文标题】以编程方式将多个 SQL 列组合并存储到一个列中【英文标题】:Combine and store multiple SQL columns into a single column programmatically 【发布时间】:2011-03-21 16:50:53 【问题描述】:

我在 Access DB 中有多个列,我想组合字段 A、B、C 并将它们存储在 D 列中,并在它们之间使用逗号分隔符。 D = A、B、C。

现在我正在使用 OleDbConnection,但我对其他方法持开放态度。如何将多个 SQL 列中的行数据组合并存储到单个列中?

【问题讨论】:

A、B、C的数据类型是什么,还有D列是不是已经存在了? 【参考方案1】:

假设字符串的简单情况,可以使用更新语句:

Update table set D=A+','+B+','+C

然而,这可能不是一个好主意。您可能想推断“为什么”要这样做,因为可能有更好的选择。

【讨论】:

我为什么要这样做有点棘手,主要是因为 ESRI 定位器样式的限制。我很确定这是 TMI,但这有点扩展了上下文,gis.stackexchange.com/questions/5786/… 我认为在这种情况下,您最好在需要时使用@HansUp 的解决方案来计算字段。如果要将其作为列访问,请在表中创建一个包含计算列的视图。如果您创建一个新列并用计算数据填充它;然后,当其他列更新时,您会打开自己的陈旧数据。这在数据库设计中是“一件坏事”。【参考方案2】:
INSERT INTO table (d) VALUES (SELECT a + "," + b + "," + c FROM table)

上面做了很多假设。

【讨论】:

我得到的印象是他希望它们与现有行对齐。我认为这种方法不适用于...【参考方案3】:

我质疑为什么要将这些 A、B 和 C 值冗余地存储在另一列 D 中。D 可能是一个字段表达式,它根据需要连接其他字段值。

SELECT A & "," & B & "," & C AS D
FROM YourTable;

如果您使用原始方法(将连接的值存储在单独的列 D 中),则需要确保每次 A、B 和/或 C 中的值发生变化时都更新 D。使用 SELECT 查询方法,始终保证 D 准确反映 A、B 和 C 中的当前值……无需额外努力。

【讨论】:

+1 明智的建议。创建一个很容易被“损坏”的数据库很少是解决问题的正确答案。

以上是关于以编程方式将多个 SQL 列组合并存储到一个列中的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery SQL 中跨多个字段的拆分函数

SQL 查询将多条记录中的值组合到单个列中

将一个sql语句用于不同的搜索组合

将 Spark Dataframe 中的多个列发送到外部 API 并将结果存储在单独的列中

更多列,或一列中的多个值 - SQL 数据库?

ASP.NET Core Web API - 如何将属性组合作为原始数据存储到另一个模型的单个列中