ACCESSの質問です。

TBL_XのXというテキスト型フィールドに【】で囲んだ文字列が数個入っています。
この【】で囲まれた文字列を【】も含めて除外するクエリの式を教えてください。

例)【○○○○】ABC【△△】DEF【■■】→ ABCDEF という結果にしたいです。

【】の場所と個数は、レコードごとにばらばらです。

回答の条件
  • 1人5回まで
  • 登録:2008/03/13 16:34:57
  • 終了:2008/03/19 06:22:11

回答(2件)

id:Im_Me No.1

Im_Me回答回数301ベストアンサー獲得回数62008/03/13 17:49:34

ポイント35pt

ACCESSのバージョンはいくつになりますか?

Replace関数が使えますが、2000だと関数を作ってあげないと、直接クエリでは使えないようです。

↓TIPSです

http://www.nurs.or.jp/~ppoy/access/access/acM029.html

id:rupopon

ありがとうございます。2003になります。よろしくお願いします。

2008/03/13 18:18:27
id:bonlife No.2

回答回数421ベストアンサー獲得回数752008/03/14 12:10:50

ポイント35pt

id:Im_Meさんがしばらく回答できなそうですので、横から回答させていただきます。

まず、ユーザ定義関数を使う必要があります。

モジュールを新規作成し、以下の myReplace 関数を定義してください。

Option Compare Database
Option Explicit
Function myReplace(orginalString As String) As String

' 正規表現用のオブジェクトを生成
Dim regexp
Set regexp = CreateObject("VBScript.RegExp")
Dim strAns As String

' 正規表現のパターンを設定
regexp.Pattern = "【.*?】"
' 一致するパターン全てを対象にする
regexp.Global = True
' 関数の引数で渡した文字列を対象に置換
' 正規表現【.*?】にマッチする部分を""(文字なし)に置換
strAns = regexp.Replace(orginalString, "")
' 正規表現オブジェクトの削除
Set regexp = Nothing
' 置換結果の文字列を戻り値にする
myReplace = strAns

End Function

その後、クエリのデザインビューのフィールドで myReplace(field1) というように設定します。(この場合、field1 という列を対象に置換を行います。SQLビューであれば以下のように myReplace() を使います。

SELECT myReplace(field1) AS 置換後の値
FROM テーブル1;
id:rupopon

ありがとうございました。やってみます。

2008/03/14 14:35:24
  • id:Im_Me
    大変申し訳ありません。思いきり質問文を読み違えておりました;
    おまけに諸事情で来週まで確認できる環境がありません…orz

    http://www.accessclub.jp/bbs3/0266/superbeg82813.html
    単発【】内を削除するだけなら↑でいけますが、複数あるとダメなので、
    【】内の文字列を拾い出して、それをReplace関数で置きかえる、で行けないかな…と


    が、とにかくすぐに確認ができないので、とりあえずオープン分のっかりしておきます。
    本当にごめんなさい。
  • id:rupopon
    わざわざありがとうございます。
    またいらしたら教えて頂けると幸いです。
  • id:Im_Me
    すみませんでした。
    お題が「クエリで」という物でしたので、なんとかモジュール使わずにやりたかったのですが、やはり複数個のフィールドを一気に更新するにはモジュール使わないとダメっぽいですね…。

    UPDATE TBL_X SET TBL_X.X = NZ(Replace([X],(Mid([X],InStr([X],"【"),InStr([X],"】"))),""),[X])
    WHERE (((TBL_X.X) Like "*【*" Or (TBL_X.X) Like "*】*"));

    ↑一番最初にヒットした奴しか変えてくれない…


  • id:rupopon
    どうもありがとうございました。
    なんとかなりそうです。たすかりました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません