アプリ版:「スタンプのみでお礼する」機能のリリースについて

八桁の数字(VACHAR)を持つフィールドがあります。
このフィールドの使い方として最初の二桁が分類コード、次の二桁がメーカーコード、次の四桁が連番と定義します。
ここで質問なんですけど、
たとえばメーカーコードが'01'から'25'に該当する物を検索したい場合にはどのようなWHERE句にしたらよいのでしょうか?

A 回答 (5件)

こんにちわ。



八桁の数字の項目名がAAAとした場合
WHERE SUBSTR(AAA,1,2) >= '01'
AND SUBSTR(AAA,1,2) <= '25'
としてやればいいと思います。

SUBSTR関数は上記の例で言うとAAAの1桁から2文字という意味になります。
    • good
    • 1

再びmaruru01です。



すみません。
VACHAR(VARCHAR?)だから文字列なんですね。
それなら、No.2の人のやり方ですね。
ただし、SUBSTR(AAA,3,2)ですが。
また、SUBSTRってたしかOracleにしかなかったような気がします。
SQLServerならSUBSTRING、AccessならMIDでしょうか。

あとは、ワイルドカードによるパターンマッチングという方法もあります。

WHERE 8桁フィールド名 LIKE '__01%' OR 8桁フィールド名 LIKE '__25%'

という感じでしょうか。
ワイルドカード(メタ文字)も、データベースによって異なるので注意して下さい。
    • good
    • 0
この回答へのお礼

たびたびご回答ありがとうございますm(_ _)m
答えていただいたやり方だと三桁目と四桁目が01か25の物になってしまうみたいです^^;
それなのでSUBSTRING関数を使ってやってみたいと思います!!

お礼日時:2002/12/18 15:03

VACHARでなくてVARCHAR(可変長文字列)ですよね。


基本的にNo.2の方のでいいと思いますが、ちょっとだけ修正します。
メーカーコードが3桁目、4桁目ですので、

WHERE SUBSTR(AAA,3,2) >= '01'
AND SUBSTR(AAA,3,2) <= '25'

になります。
    • good
    • 1

こんにちは。

maruru01です。

そういう使い方の場合は、文字列と定義した方がいいんですが。
数値型だと、最初の2桁が0で始まるものが使えませんし。

また、お使いのデータベースが分かりませんので具体的には言えませんが、
方針としては、(01~25を抽出する場合)
100000で割った余り(MOD関数か)が10000~25999のものを抽出する
ということでしょうか。

Accessなら、MOD演算子を使用して、

WHERE 8桁フィールド名 MOD 100000 BETWEEN 10000 AND 25999

という感じでしょうか。
    • good
    • 0

八桁の数字 >='01000000' and 八桁の数字 <='25999999'



上記のようにしてみたら、どうでしょうか?
    • good
    • 0

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

関連するカテゴリからQ&Aを探す