人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ACCESSのクエリでの質問です。

テーブルA
フィールド1

d
支払い
pc文字
a箱

上記のテーブルのように、一つのフィールドに文字列がいくつか入っているのですが、
その内複数の不要な文字列をクエリで表示しないようにしたいです。
下記のような結果を出すにはどうしたら良いでしょうか。

テーブルA
フィールド1

文字

●質問者: rupopon
●カテゴリ:コンピュータ 学習・教育
✍キーワード:access pc クエリ フィールド 文字列
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●35ポイント

「不要な文字列の個数」と「Accessのバージョン」の組み合わせによっては

replace関数を入れ子にするという手も使えるかと思いますが

私なら自作関数との組み合わせにします。

関数

Function MyReplace(t As String) As String
  t = Replace(t, "d", "")
  t = Replace(t, "支払い", "")
  t = Replace(t, "pc", "")
  t = Replace(t, "a", "")
  MyReplace = t
End Function

クエリ

SELECT F2
FROM (
  SELECT MyReplace(F1) as F2 FROM テーブルA
)
WHERE F2 <> "";
◎質問者からの返答

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


2 ● kaiton
●35ポイント

テーブル名とフィールド名は置き換えていますが.. Replace関数では

SELECT Replace(Table_1!F11,Table_2!F21,"") AS F21
FROM Table_1, Table_2
WHERE (((Table_1.F11) Like "*" & Table_2.F21 & "*"));

けれど、置き換えする文字がないレコードが消えるんですよね?

その質問をするのを忘れましたが...

そのようなレコードはないのか?

あっても不要なのか?

そのようなレコードも必要

SELECT Replace(Table_1!F11,Table_2!F21,"") AS F21
FROM Table_1, Table_2
WHERE (((Table_1.F11) Like "*" & Table_2.F21 & "*"))
UNION All
SELECT Replace(Table_1!F11,Table_2!F21,"") AS F21
FROM Table_1, Table_2
GROUP BY Replace(Table_1!F11,Table_2!F21,"")
HAVING (((Count(Table_1.F11))=(SELECT COUNT(*) FROM Table_2)));

でいけましたが.. もっと良い方法があるかもしれません。

バージョン2003で確認しています。

◎質問者からの返答

ありがとうございました。置き換えする文字がないレコードも必要です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ