【发布时间】:2015-06-01 11:04:41
【问题描述】:
我正在将 sql 导入到我的 Access 数据库中,并且正在将数据解析为正确的表和字段。我再次求助各位大师来帮助解决问题
其中一个导入的字段有逗号分隔的值需要分隔。字符串中有 1 到 10 个可能的值。
PHO,Rosgen,NRCS,EMAP,T-DL,YSI-DL
我发现如果我使所有值的长度相同(比如 4 个字符),我可以在逗号之后获取第一个、最后一个和第一个来解析,但似乎无法正确提取中间值。
SELECT Left([FieldForms],InStr([FieldForms],",")-1) AS DEQ_SampleTypeID
FROM tblSiteVisit
UNION ALL
SELECT Mid([FieldForms],InStr([FieldForms],",")+1,4) AS DEQ_SampleTypeID
FROM tblSiteVisit
UNION ALL
SELECT Mid([FieldForms], 11, 4) AS DEQ_SampleTypeID
FROM tblSiteVisit
UNION ALL
SELECT Mid([FieldForms], 16, 4) AS DEQ_SampleTypeID
FROM tblSiteVisit
UNION ALL
SELECT Mid([FieldForms], 21, 4) AS DEQ_SampleTypeID
FROM tblSiteVisit
UNION ALL
SELECT Mid([FieldForms],InStrRev([FieldForms],",")-4,4) AS DEQ_SampleTypeID
FROM tblSiteVisit
UNION ALL
SELECT Right([FieldForms],InStr([FieldForms],",")-1) AS DEQ_SampleTypeID
FROM tblSiteVisit
如果我使用 InStrRev 或 Right 函数,我会得到重复,如果少于最大值,使用 Mid 函数也会导致空行。
有没有办法解析出这样的字符串,只从字符串中获取结果
【问题讨论】:
-
使用 Access VBA 过程而不是查询会更容易 IMO。这对你来说是一个合适的选择吗?
-
任何可行的方法都是一种选择
-
Split(FieldForms, ",")会给你一个字符串数组。为数组中的每个项目在目标表中添加一行。