• ベストアンサー

AccessVBA SQL テキスト型は大小判定できない?

こんにちわ。 AccessVBA業務暦1ヶ月の新米です。 テーブルからテキスト型のフィールドを抽出するとき、抽出条件として「A~B」とか「Aより大きいもの」 という条件で抽出しているのですがうまくいきません。フィールド自体はテキスト型でとっているのですが、中身のデータは「00001、000023・・・」とか数字で入っています。フィールドを数値型にしたらうまくいくのに、テキスト型にするとうまく抽出できません。解決方法はあるでしょうか?他のシステムとの連携があるので、できればAccess側はテキスト型でとっておきたいです。説明不足かもしれませんが、よろしくお願いします。

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

  • ベストアンサー
  • uzukichi
  • ベストアンサー率53% (8/15)
回答No.2

No.1さんの補足ですが テキスト型も大小の判定はします。ただテキストの大小は  11 100 この2つの数字が入っていたとすると11の方が大きいと判断されます。 文字ですから、11(十一ではなくいちいち) 100(百ではなくいちぜろぜろ)という文字と認識されます。 11 100と左詰にしてくらべるとわかりやすいかと思います。 その為、00001と000023を数字として条件と比較する(フィールドの設定はテキスト型のまま)には 比べるときだけ数字に変換をするようにします。 ********************************************* Tテストファイル[テーブル名]の テキストコード[テキスト型のフィールド]に対する条件にすれば select テキストコード from Tテストファイル where Ccur(テキストコード) > 25 とすれば 000026や00035は取得できますが 0022や0008は除外できますよ

mttk1238
質問者

お礼

お返事ありがとうございます。 細かい解説をしていただき、一気に疑問が晴れたような感じです。またよろしくお願いします!!!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • tonmaji
  • ベストアンサー率7% (1/14)
回答No.1

そのテキスト型のフィールドに CLng等をかませればいいのでは。 参考までに。。。。 CInt(整数型に変換) Clng(長整数型に変換) CCur(通貨型に変換) そうすれば、取得時に数値としてみなされますので、 ちゃんと大小判定されます。 ■使用例 カラムAより大きいカラムBを持つデータをとってくる場合 select * from テーブル名 where CLng(カラムB) > CLng(カラムA) DBの型自体はテキスト型のそのままで、 取得するSQLで型変換すればよいです

mttk1238
質問者

お礼

お返事ありがとうございます。 なるほどなるほど・・・。そういえばそのような関数があったような記憶が・・・・ちょっとチャレンジしてみます。ありがとうございました!!

すると、全ての回答が全文表示されます。

関連するQ&A