2011-06-28 35 views
4

我有一個表,看起來像這樣MS Access/SQL問題:如何拆分字符串?

[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 
<...> 

我明白任何輸入。

乾杯

回答

2

如果你確信城市由一個分開的,且只有一個空間,你可以使用Split函數,該函數返回一個項目數組(每個項目的一個城市)。我不知道數據的來源,但名稱中有空格的城市,p。即「聖保羅」。按空間分割的aproximation不是alwais有效的。

對於生成您可以使用以下algoritm輸出表(未探測):

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 
+0

非常感謝您的回答。但是,我正在尋找一種方法來通過SQL來做到這一點(現在我正在嘗試應用http://www.pcreview.co.uk/forums/fyi-sql-splitting-delimited-concatenated-string-into -separate-strings-rows-t1171660.html但我無法弄清楚..) –

+3

在SQL中做它可能會涉及一些醜陋的UNION查詢,它們根據它們中的空格數解析城市字段。這是一次性操作,對吧?那麼爲什麼不直接使用上面的代碼呢,這比你在SQL中最終得到的任何東西都要簡單得多。 –