将分隔字段拆分为多个字段
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 sql中的逗号分隔字符串将单行拆分为多行?