プロが教えるわが家の防犯対策術!

Accessのクエリでたとえば下図のようなクエリがあるのですが、

------------------------------------------------------------
   製品番号   |  商品番号 |  品   名   |  品名カナ
------------------------------------------------------------
0123456789ABCD | 789ABCD   | ボールペン(黒)| ボールペン
123456789ABCDE | 89ABCDE   | 万年筆     | マンネンヒツ
    ・        ・       ・         ・
    ・        ・       ・         ・

このデータの「製品番号」の上位7桁だけ抽出したくてヘルプで関数をいろいろ調べてみたのですがよくわからず困っています.
前回違う質問をさせていただいたときに,更新クエリでRIGHT関数を使って下位7桁の抽出の仕方を教えていただいたのですが,その関数の逆版(LEFT関数??)のような感じの関数は存在しないのでしょうか?
ありましたらぜひ教えていただけないでしょうか.
どうぞよろしくお願い致します.

A 回答 (2件)

Left関数ありますよ。



SQLならこんな感じ ==========================
SELECT t1.aa, t1.bb, t1.cc
FROM t1
WHERE ((Left(aa,5) ="12345"));
===========================================

また、Likeを使用することでも同様の機能が実現できます。

SQLならこんな感じ ==========================
SELECT t1.aa, t1.bb, t1.cc
FROM t1
WHERE (((t1.aa) Like '12345*'));
===========================================

クエリを作成してSQLビューで確認してみてください。

この回答への補足

早速のご回答ありがとうございます.
私の知識不足で申し訳ないのですが,SQLがよくわからないのでおかしなことを言ってましたらすみません.
・教えていただいたSQLを作成したクエリの下に追加してみたのですが,実行すると「SQLステートメントの後に文字が見つかりました.」と言う警告が出てその先に進めません,作成したクエリの中に埋め込んでみたりもしたのですが、やはり同じメッセージが出てしまいました.
入力するところが間違っているのでしょうか?
申し訳ありませんが、アドバイスお願い致します.

補足日時:2001/06/12 10:15
    • good
    • 0

わかりにくい説明でしたね、ごめんなさい。


では、クエリを新規作成してみましょうか。

ご質問にあがっているテーブルのカラム名がわからないので以下のように仮定しますね。

商品テーブル:
・製品番号
・商品番号
・品名
・品名カナ

抽出条件に使用するカラム:製品番号をLeft関数で7文字分とってきます。
フィールドには以下のように入力することとなると思います。

Left([製品番号],7)

このフィールドの抽出条件に抽出したい文字列を入力してください。
"1234567"


SQLビューでみるとこんな感じになるのでは?

SELECT 商品テーブル.製品番号, 商品テーブル.商品番号, 商品テーブル.品名 ,商品テーブル.品名カナ
FROM 商品テーブル
WHERE ((Left(商品テーブル.製品番号,7) ="1234567"));

これで、必要とするデータが抽出されると思います。

補足ですが...
Left関数はの構文は以下のようになっていますので、文字列の部分にテーブルのカラム名と必要な文字数を記述してやります。

LEFT(文字列, 文字数)

ヘルプで"LEFT関数"を検索すると引っかかると思います。
    • good
    • 0
この回答へのお礼

takasgyさんありがとうございます!
丁寧な説明でとてもわかりやすく,すぐに試してみましたところ成功しました.
また,大変勉強になりました.
本当にありがとうございました! m(__)m

お礼日時:2001/06/12 12:01

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