ACCESSで、文字の間に半角が2つ入っているもの、または、全角2つが入っているデータの抽出など、できますか?またその方法があれば教えてください。お願いします。

A 回答 (1件)

フォームフィルタやクエリーの抽出条件で


Like "* *" とか、Like "*   *"とするだけです。
*と*の間には半角スペース2個や全角スペース2個を入れます。

フォームフィルタの方はテーブルからも直接抽出できるのでこちらの方法を示します。
テーブル又はクエリーから、フォームフィルタのアイコンをクリックして、Like "* *" 、Like "*   *"を入力して、フィルタの実行をクリックするだけです。
Like""は省略できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS:半角、全角空白スペースを含む文字列の検索

Access2003にて、空白、全角スペースを含む文字列の
検索を行う方法について教えて下さい。

他社から送られてきた検索用のリスト(xls形式)を元に、
商品の検索を下記のフィールドから行っています。
商品フィールドに商品名が約30万行格納されています。
格納されている商品名は間に
半角スペース、全角スペース、スペース無し
など不規則な入力になっています。
(例:東芝除湿機、日立 掃除機、Canon 複合機…)

商品名の検索時に文字列の半角スペースと全角スペースの
指定が異なっていると検索が行えないため困っています。
(例:Canon 複合機で検索時、格納データはCanon 複合機のため検索結果なしになる)

テーブルのスペースを統一、もしくは削除する方法などありますでしょうか。
皆様のお知恵をお貸し下さい。

なお、クエリでtrimを使用したスペースの削除は行ったのですが、
検索時に頻回にErrorが出るようになり断念しました。

Aベストアンサー

replace("東芝除湿機、日立 掃除機、Canon 複合機"," ","",vbtextcompare) で
半角・全角かかわらず全て取り去りますので
テーブル作成クエリなどで処理されたら良いと思います。
そのテーブルをもう更新しないのならインデックスをつければ
検索は速くなると思います。

でも他から来たデータって色々と気をつけないと・・・

QAccess2000で文字列中の半角スペースを検索するクエリ

タイトル通りのクエリを作成するには、
どのようにすればよろしいでしょうか?
ご存知の方回答おまちしております。

Aベストアンサー

WHERE句の記述を、

InStr(1, [FieldName], " ",vbBinaryCompare) <> 0

とすればよい。

WHERE [FieldName] Like '* *'

は、全角、半角が区別されないので、NG。

QAccessで名前の間のスペースを削除したいのですが

Accessで名前の間のスペースを削除したいのですが

Aベストアンサー

細かい状況が分かりませんがAccessではReplace関数というものが使用できます。
例えば 鈴木 太郎 のようなデータがテーブルの氏名フィールドに入っている場合には、更新クエリーで次のように更新すれば間のスペースを除去できます。
Replace([氏名]," ","")

Replace関数は文字列中のある文字を別の文字に置き換える関数ですが、この例では全角スペースを""(空文字列=文字なし)に置き換えています。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QAccessのクエリで、Left関数を使用して、7桁の数値を抜き出す方

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。
IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。
いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。
元のテーブルに入力されているIDを変更することなく、
クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。
宜しくお願い致します。

Aベストアンサー

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。

関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます
単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します

全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです

先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください

Qaccessで空白の時の抽出

access2000を使っています。まだ初心者なので難しい事はできないのですが、クエリを使って絞り込み検索のフォームを作っています。
テーブル内のデータで空白のデータがあります。その際にクエリの抽出条件にlike iif(is null([forms]![formA]![テキスト100]),"*","*"&[forms]![formA]![テキスト100]&"*")としています。フォームのテキストが空白のときは全て抽出するという条件を満たす予定で設定したのですが、テーブル内のデータが空白の物が抽出できません。データが空白がない様にすればいいのでしょうが、クエリの条件で設定できないものでしょうか?データはテキスト型です。

Aベストアンサー

クエリで、like "*"では、空白のレコードの抽出は出来ないのでは?
like "*" Or Is Nullになると思いますが、これをこのまま指定の抽出条件に記述したら、条件が・・・のエラーメッセージが出ると思います。そこで、何もかもを一度にするので無く、多少分解してやります。
抽出条件というフィールドを作成し、InStr関数を使用して、テキストの中に、指定した文字が含まれているかを調べます。この関数は、文字が見つかった時は、最初に見つかった文字位置を返してくるので、抽出条件は、<>0と指定します。
フォームに抽出条件が設定されていない時は、全件抽出したいという事ですので、テキストボックスが空白の時に、0以外をこのフィールドにセットすればOKでは?

フィールドに
抽出条件:IIf(IsNull([Forms]![formA]![テキスト100]),1,InStr([FAX番号],[Forms]![formA]![テキスト100]))
抽出条件に
<>0

こんな感じでどうでしょ?

Qクエリーで、全角混じりデータの抽出[access95]

半角で入力すべきフィールドの中に全角文字が混在している時に、
この全角文字が混在しているデータを、クエリーで抽出する方法を
教えてください。

データ型はテキストで、フィールド長は50です。
また入力されているデータは、任意<50文字とないっています。

Aベストアンサー

StrConv([列名],128)でANSI文字に変換すれば半角文字が1バイトに変換されるので判定が出来るようになります。

クエリでしたら
IIf(LenB([列名])=LenB(StrConv([列名],128)),True,False)
で列にTrue、Falseが返ってくるようになりますので抽出条件を設定すればいいですね。

QOfficeアクセス テーブル「テキスト型」⇒「日付型」への変換について

テーブルにデータが保管されており、そのフィールドの一つに「テキスト型」で”20080301”のようなデータを持っています。これを「日付/時刻型」”2008/03/01”のように変換したいのですが、どのようにすればよいのでしょうか。

※ちなみにこのオリジナルデータは毎日、自動的にテーブルにダウンロードされており、このテーブル自体の型を予め「日付/時刻型」に変換すると、日々のデータ取得時にエラーとなってしまいます。ですので、「日付/時刻型」のフィールドを持った新規のテーブルに、この”20080301”のデータを変換し格納したいのですがどのようにすればよろしいでしょうか。

テーブル⇒デザインより、該当のフィールドの型を「テキスト型」⇒「日付/時刻型」へ直接変換してしまうと、「データの変換中にエラーが発生しました。○○件のレコードのデータが失われました。」と表示されます。素人のため、なるべく追加クエリや更新クエリや簡単な関数のみでの方法を教えていただけたら幸いです。

Aベストアンサー

テーブルに日付時刻型フィールドを追加して、
更新クエリを使って、#1さんが提案されている
数式を使えばよいのでは?

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング