Я импортирую sql в базу данных Access и работаю над разбором данных в правильные таблицы и поля. Снова я обращаюсь к вам, гуру, чтобы помочь в решении проблемы.Разбор строк в Access
Одно из импортируемых полей имеет разделенные запятыми значения, которые необходимо разделить. В строке может быть от одного до десяти возможных значений.
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 или правильную функцию я получаю повторы, если есть меньше, чем максимум также с помощью функции Mid результатов в пустых строках.
Есть ли способ, чтобы разобрать строку, как это и только получить результаты из строки
Это будет проще ИМО с процедурой доступа VBA вместо запроса. Будет ли это подходящим вариантом для вас? – HansUp
Все, что сработает, это вариант – pja
'Split (FieldForms,", ")' даст вам строковый массив. Добавьте строку в таблицу назначения для каждого элемента массива. – HansUp