gpt4 book ai didi

ms-access - 将逗号分隔的字段解析为单独的字段 (MS ACCESS VBA 2003)

转载 作者:行者123 更新时间:2023-12-04 18:46:17 25 4
gpt4 key购买 nike

我继承了一个数据库,其中用户输入字段存储为逗号分隔的字符串。我知道。瘸。我想要一种在 SELECT 查询中解析这些字段的方法,其中有三个不同数量的字符段。与我将字段插入新表或创建存储过程来执行此操作的所有建议相反,这就是我想出的。我想知道是否有人认为这样做作为选择查询有任何缺陷(我可以轻松地将字符串从字符串转换为已解析并根据需要再次返回)。

Field_A
5,25,89

所以要得到最简单的左段:
Field_1: Left$([Field_A],InStr([Field_A],",")-1)

要获得最右边的部分:
Field_3: Right$([Field_A],Len([Field_A])-InStrRev([Field_A],","))

中间部分是最棘手的:
Field_2: Mid([Field_A],InStr([Field_A],",")+1,InStrRev([Field_A],",")-InStr([Field_A],",")-1)

所以结果是:
Field_1   Field_2   Field_3
5 25 89

有没有同意的意见?

最佳答案

好吧,如果你坚持走这条路……
这可能更容易,适应性更强。在模块中创建一个函数:

Public Function GetValueFromDelimString(sPackedValue As String, nPos As Long, 
Optional sDelim As String = ",")

Dim sElements() As String

sElements() = Split(sPackedValue, sDelim)
If UBound(sElements) < nPos Then
GetValueFromDelimString = ""
Else
GetValueFromDelimString = sElements(nPos)
End If

End Function

现在在您的查询中,您可以获得字符串中的任何字段,如下所示:
GetValueFromDelimString([MultiValueField],0) AS FirstElement、GetValueFromDelimString([MultiValueField],1) AS SecondElement 等。

我觉得我在为未成年人买啤酒,鼓励这种行为:)

关于ms-access - 将逗号分隔的字段解析为单独的字段 (MS ACCESS VBA 2003),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com