将分隔字段拆分为多个字段

Posted

技术标签:

【中文标题】将分隔字段拆分为多个字段【英文标题】:Split Delimited Field To Multi Fields 【发布时间】:2017-05-23 16:39:26 【问题描述】:

我有一个 access 2013 表,其中包含一个带有逗号分隔值的字段。我创建了第二个表,我需要将结果解析成这样的结构

uPPID number
value1 short text
value2 short text
value3 short text
value4 short text

我正在动态创建表,因此它总是有足够的“值”字段来容纳将被解析出的数字。样本数据是这样的:

 uppID   values
aeo031  boat, goat, hoat, moat

我希望字段映射像这样

uPPID = aeo031
value1 = boat
value2 = goat
value3 = hoat
value4 = moat

如何访问 vba 解析出一个从一个字段到多个字段的 csv 列表?

【问题讨论】:

【参考方案1】:

可能有比在目标表中一一插入记录的以下 VBA 循环更快/更好的解决方案。但例如它可以完成这项工作。

TableCSV 是源表的名称 TableFields 是目标表的名称 常量maxValues 指定了values 可用的字段数 查询在组合values字段后动态组合INSERT INTO语句;它完成它以提供所有列,并添加周围的引号'...'。 (p.s. 如果我们可以在不指定所有列值的情况下插入,则可以简化..)

.

Sub splitTable()
  Const maxValues As Long = 4 ' <-- Set to number of value fields in destination table
  Dim query As String, values As String, rs
  Set rs = CurrentDb.OpenRecordset("TableCSV")

  Do Until rs.EOF
    values = rs!values ' next we add commas to provide all fields
    values = values & String(maxValues - UBound(Split(values, ",")) - 1, ",")
    values = "'" & Replace(values, ",", "','") & "'"  ' 'a', 'b', '', '' etc
    query = "INSERT INTO TableFields VALUES (" & rs!uPPID & "," & values & ")"
    Debug.Print query

    CurrentDb.Execute query
    rs.moveNext
  Loop
End Sub

【讨论】:

以上是关于将分隔字段拆分为多个字段的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何将一个字段里的值拆分为多个值显示出来

oracle 以‘’分割的长字段拆分成多个(很多)字段

如何根据一个字段是不是包含oracle sql中的逗号分隔字符串将单行拆分为多行?

针对任意多个分隔符拆分字符串

我可以将单个 Django 模型字段拆分为多个 Django Rest Framework 序列化器字段吗?

如何使用 Postgresql 将文本拆分为多个字段?