• ベストアンサー

アクセスでの文字列の取り扱いについて

はじめまして、こんにちは。アクセスでの文字列の取り扱いについて教えてください。 今テーブルには、 列1に テスト12テスト12-3-89-3 環境123 自然テスト1-2-5-4-5 というデータがあったとします。 これを テスト   12テスト 12   3  89  3 環境          123   自然テスト       1    2  5   4 というように6つの列に切り分けたい(自然テスト1-2-5-4-5のように数値で5つのデータを持つときは最後の5は削除)のですが、どうすればいいのでしょうか? データの特徴としては、 「ー」は最大で4個ある。 最初は文字で始まる。 数字はすべて全角。 です。 何か参考になるホームページやキーワードがあれば教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#182251
noname#182251
回答No.1

何となく「正規表現」の世界の話に感じられます 正規表現に関して、概説は http://www.mnet.ne.jp/~nakama/ を読んでいただくとして。 データ処理の流れは 1.レコード読み込み 2.正規表現による切り分け 3.レコード書き込み ということになりますが、SQL(更新クエリなど)にくらべると、数百倍時間が掛かる可能性があります。またアクセスの世界から正規表現を扱うDLLなどが操作可能かは知りません。

eri1235
質問者

お礼

ご返事遅くなりまことに申し訳ございません。 なんとか問題も解決できました。 ありがとうございました。

その他の回答 (1)

noname#79209
noname#79209
回答No.2

わたしも#1の方が言われるように「正規表現」が良いと思います。 正規表現を使うのであれば、 http://www.hi-ho.ne.jp/babaq/basp21.html にある「BREGEXP.DLL」の使用をお勧めします。 数値間の「-」に「ー(長音)」が使われている恐れがある場合、「正規表現」を使わずに変換しようとすると結構複雑なコードを書かなくてはなりません。 Instr関数等を使用して「ー(長音)」を「-」に変換しようとすると、「データ」等の本当に必要な「ー(長音)」も変換されてしまいますから、これをトラップする必要があります。 正規表現なら、 変換元の変数名をstrFrom、変換後の変数名をstrToとすると strTo = BregExpReplace("s/^([ぁ-]+)([0-9])/$1\,$2/k",strFrom) で、文字列の頭にある複数の日本語とそれに続く全角アラビア数字の間に「,(カンマ)」を挿入できます。 また、その後 strTo = BregExpReplace("s/([0-9])[-ー]([0-9])/$1\,$2/gk",strTo) で全角アラビア数字にはさまれた「-」か「ー(長音)」を「,(カンマ)」に変換できます。 これを、 strArray = Split(strTo,",",,1) でstrToの内容が各「,」の位置で分割され、配列strArrayの各要素に順番に入ります。

eri1235
質問者

お礼

ご返事遅くなりまことに申し訳ございません。 なんとか問題も解決できました。 ありがとうございました。

関連するQ&A