以编程方式将多个 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 列组合并存储到一个列中的主要内容,如果未能解决你的问题,请参考以下文章