• ベストアンサー

SQL文のWHERE句について

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

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

  • ベストアンサー
  • bobble
  • ベストアンサー率34% (111/323)
回答No.2

こんにちわ。 八桁の数字の項目名がAAAとした場合 WHERE SUBSTR(AAA,1,2) >= '01' AND SUBSTR(AAA,1,2) <= '25' としてやればいいと思います。 SUBSTR関数は上記の例で言うとAAAの1桁から2文字という意味になります。

その他の回答 (4)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

再びmaruru01です。 すみません。 VACHAR(VARCHAR?)だから文字列なんですね。 それなら、No.2の人のやり方ですね。 ただし、SUBSTR(AAA,3,2)ですが。 また、SUBSTRってたしかOracleにしかなかったような気がします。 SQLServerならSUBSTRING、AccessならMIDでしょうか。 あとは、ワイルドカードによるパターンマッチングという方法もあります。 WHERE 8桁フィールド名 LIKE '__01%' OR 8桁フィールド名 LIKE '__25%' という感じでしょうか。 ワイルドカード(メタ文字)も、データベースによって異なるので注意して下さい。

SENAS
質問者

お礼

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

  • timber
  • ベストアンサー率29% (218/739)
回答No.4

VACHARでなくてVARCHAR(可変長文字列)ですよね。 基本的にNo.2の方のでいいと思いますが、ちょっとだけ修正します。 メーカーコードが3桁目、4桁目ですので、 WHERE SUBSTR(AAA,3,2) >= '01' AND SUBSTR(AAA,3,2) <= '25' になります。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 そういう使い方の場合は、文字列と定義した方がいいんですが。 数値型だと、最初の2桁が0で始まるものが使えませんし。 また、お使いのデータベースが分かりませんので具体的には言えませんが、 方針としては、(01~25を抽出する場合) 100000で割った余り(MOD関数か)が10000~25999のものを抽出する ということでしょうか。 Accessなら、MOD演算子を使用して、 WHERE 8桁フィールド名 MOD 100000 BETWEEN 10000 AND 25999 という感じでしょうか。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

八桁の数字 >='01000000' and 八桁の数字 <='25999999' 上記のようにしてみたら、どうでしょうか?

関連するQ&A