ACCESSクエリーでの記述方について

このQ&Aのポイント
  • エクセルで使用するCONCATENATE関数に相当するACCESSの記述方法について教えてください。
  • エクセルのマクロで使用されるLEFT関数、RIGHT関数、SUBSTITUTE関数に相当するACCESSの関数の書き方を教えてください。
  • エクセルで使用するスペースの置換や文字連結の方法をACCESSのクエリーで行うための具体的な手順を教えてください。
回答を見る
  • ベストアンサー

ACCESSクエリーでの記述方について

以前、エクセルのマクロとして、下記のような記述を教えていただきました。 CONCATENATE(LEFT(SUBSTITUTE(A1," ","0"),5),"000",RIGHT(SUBSTITUTE (A2," ","0"),5)) これは、ABC△△00012(もしくはABCD△00011) のような形のデータをABC00+000+00012(プラスは入りません。わかりやすいように追記しているだけです) つまりスペースを0に変換して真ん中に3桁の000を入れて 合計13桁に変換する方法としてご教示いただきました。 エクセルではこれで問題は解決したのですが、同じことをアクセスのクエリでやる必要が出てきました。 エクセルでA1と指定した内容がテーブル1に、A2がテーブル2に入っているとして、concatenateは  テーブル1 & テーブル2 As Alias Combine FROM Table; でいけそうなのですが、SUBSTRING等はどのように書けばよいのでしょうか? 教えていただけると助かります。どうぞよろしくお願いします。

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

#1です。 テーブル1が空白の場合も考慮して --- Select Left$(Trim$(テーブル1) & "00000000",8) & テーブル2 As Combine FROM Table; 同様にテーブル2が仮に5桁ない場合、 --- Select Left$(Trim$(テーブル1) & "00000000",8) & Right$("00000" & テーブル2,5) As Combine FROM Table; (テーブル2が数値のみの場合) Select Left$(Trim$(テーブル1) & "00000000",8) & Format$(テーブル2,"00000") As Combine FROM Table;

chelny
質問者

お礼

うまくいきました! ありがとうございました。

その他の回答 (1)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

テーブル1・テーブル2というのはTableの項目名、 テーブル1は3桁以上5桁以下の文字列、テーブル2は5桁の文字列とします。 --- Select Left$(Trim$(テーブル1) & "00000",8) & テーブル2 As Combine FROM Table;

chelny
質問者

補足

回答ありがとうございます。 説明が不足しており申し訳ありません。 テーブル2は5桁なのですが、 テーブル1は3桁以上ではなく、1桁のばあいもあるのです。。 薗広昭場合、 A と 32618 などだと、教えていただいたクエリで実行すると A0000032618 となってしまいますよね。 テーブル1が1桁等もある場合は、クエリではうまくいかないのでしょうか・・・?

関連するQ&A

  • エクセルの関数について

    考えてもなかなか思いつかないので、、 教えてください。 ABC△△00012(もしくはABCD△00011) のような形のデータを ABC00+000+00012(プラスは入りません。わかりやすいように 追記しているだけです) つまりスペースを0に変換して真ん中に3桁の000を入れて 合計13桁に変換したいと思います。 関数として、 SUBSTITUTE(A1," ","0") #データがA1にあるものとして・・・ これでABC0000012に変換し、 CONCATENATE(LEFT(R[-6]C,5),"000",RIGHT(R[-6]C,5)) これでABC0000000012の13桁に変換できますが、 この2つの関数をつなげて一つにしたいのですが、 うまくいきません・・・。 どのようにしたらよいのでしょうか? また、逆に、 ABC0000000012の13桁をABC△△00012に変換するには どのようなやり方がよいでしょうか・・? よろしくお願いします。

  • ACCSESSのクエリについて教えてください

    すみません! SQL初心者なのですがクエリについておしえてください。 table1 id kigou 1 a 2 b 3 c 4 d 5 e table2 id kigou 1 a 2 b 3 cc 4 ee 上記の2テーブルよりkigouのc d eが含まれるデータを抽出して kigouの1桁目が同じもののidを合計する場合、どのような 構文になりますでしょうか。。 以下のように記載しましたが、その後どうすればよいかわかりません。 select * from table1 left join table2 on table1.id=table2.id where table1.kigou in ('c','d','e') or table2.kigou in ('c','d','e') そもそもアプローチの仕方が間違っているのでしょうか。。

  • セルの結合について

    A1セルに「abc」 B1セルに「001」  B1は書式設定でユーザ定義で表示を3桁(000)にしています。 A1とB1を結合させて、「abc001」にしたいです。 「A1&B1」や「CONCATENATE」ですと、「abc1」となってしまいます。 何とか「abc001」にできないものでしょうか? エクセルで整理して、6桁のコードとしてcsvなんかにしてDB登録したいと思っていました。

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

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

  • Accessで2つのテーブルからデータを持ってきたい

    Accessにtable A, Table Bがあるとします。Table AにはID,kudamono,yasai列があるとします。Table BにはID,その他列があります。Table AからID,kudamono,yasaiの列、Table Bからはその他列を抜き出して、結合させてExcelに書き出したいと思っています。Excelへ吐き出す部分は置いておいて、sqlでどのように書いたらよいでしょうか?ID列はTable A, Table Bで同じものです。

  • アクセスで

    アクセスでエクセルのSEARCH関数みたいなことをするにはどうすれば良いのでしょうか? エクセルだと   A 1 ABC-D 2 ABCDEF-G のハイフン前でを取りたい時は 「LEFT(A1,SEARCH("-",A1,1)-1)」 で下にオートフィルすれば良いと思います。 アクセスだとどうすれば良いでしょうか?

  • Accessのインポートについて

    マイクロソフトアクセス2010でテーブルを作り、そこにCSVファイルを読みこませたいです。 テーブルのフィールドはテキスト型です。 例えば、Table_TESTというテーブルにF1というテキスト型のフィールドを設けます。 Access標準のTEXTインポート機能を使い、インポートを行おうとします。 CSVファイルのデータは、「12345678912345678ABCD」といったように数値とアルファベットです。 なぜか、このようなデータをインポートする時にデータ変換エラーと表示されて、正しくインポートできません。 これは、なぜこのような現象が起こるのでしょうか?

  • 文字列からある文字だけを抜き出したい

    4桁と5桁の値が入っているフィールドのテーブルがあります。 やりたいことは、下三桁目に「-」を入れたいです。 例) 12345 5678 ↓ 123-45 56-78 以下のようなコードを作成しましたが、 LEFTとRIGHT関数がPostgreSQLでは使用できないようです。 WEBで調べてSUBSTRINGを使うのかなと思ったのですが、 どうすればいいかわかりません。 ******作成したコード*********** (LEFT(id,LENGTH(id)-2) || '-' || RIGHT (RTRIM(id), 2)) どうぞ宜しくお願い致します。

  • エクセル上とVBA上の動きの違いについて

    教えてください。 先程質問をして早まって回答を締め切りしてしまったものです・・・。 申し訳ないです・・・。 質問の内容としては、 「1234  14   35」 のように、 数字と数字の間にスペースが入っています。 スペースの数は一定ではありません。 これを一つのハイフン”-”に変換したいのですが、 どうしたらよいでしょうか? substituteを使うと、1234----14--35になってしまいますし、TRIMを使うと消えてしまいますし・・・。 というものでした。 回答で、SUBSTITUTE(TRIM(A1)," ","-") を教えていただき、早速エクセルでためしたところ、 結果がOKだったので喜んで締め切ってしまいました・・。 ところが、実際にVBAに kakou2 = Application.Substitute(Trim(b(x)), " ", "-") とかいたところ、うまくいきません。。 元データは「ABCD 123456」 で、結果は 「ABCD--123456」になりました。 なぜなんでしょう・・・。 今度からきちんと最後まで確認してから回答を締め切ろうと 反省しております。 どなたか助けてください。。 よろしくお願いします。

  • エクセル関数 LEFTの使い方

    使い方が良く分からないので教えてください エクセルで伝票作成を行う準備をしています 数字をLEFT変換させて使おうと思いますが 桁数の定まらない数字を正しく表示させるようにする方法を教えてください A1に 134 と打った場合 N1=LEFT(RIGHT(A1,1))=4                    LEFT(RIGHT(A1,2))=3                    LEFT(RIGHT(A1,3))=1 となりますが  4桁目が存在しない場合3桁目が表示されてしまいます                    LEFT(RIGHT(A1,4))=1 これを   非表示にさせる方法はありますでしょうか?

専門家に質問してみよう