MS Access / SQL Вопрос: Как разбить строки? - PullRequest
4 голосов
/ 28 июня 2011

У меня есть таблица, которая выглядит следующим образом

[name_attr][visted_places_attr]
 peter      zurich paris tokyo
 max        nyc london prague
 max        stockholm

Города разделены пробелом.Если есть более трех городов, они перечислены в новом ряду.Я пытаюсь выяснить, как я могу получить города отдельно (и разграничены) в новой таблице этой формы:

[name_attr][visited_place_attr] 
 peter      zurich
 peter      paris
 peter      tokyo
 max        nyc
 max        london
 <...>

Я ценю любой ввод.

Приветствия

1 Ответ

2 голосов
/ 28 июня 2011

Если вы уверены, что города разделены одним и только одним пробелом, вы можете использовать функцию разделения, которая возвращает массив элементов (каждый элемент города). Я не знаю источника данных, но в названии есть города с пробелами, с. е. "Сан Пауло". Аппроксимация разбиения по пространству не всегда верна.

Для генерации выходной таблицы вы можете использовать следующий алгоритм (не проверенный):

nameAttr = rs!name_attr
do while nameAttr = rs!name_attr
    cities = split(rs!visted_places_attr, " ")
    for each city in cities
        rsTarget.AddNew
        rsTarget!name_attr = nameAttr
        rsTarget!visited_place_attr = city
        rsTarget.Update
    next
    rs.MoveNext
    if rs.eof then exit do
loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...