• ベストアンサー

VARCHAR型の数値比較

教えてください。 テーブルにVARCHAR型のデータがあるのですが、 その内容は、数値や文字です。  2.5  20  0未満 などなど。 仮に4以下のデータを抽出する場合、 どのようにかけば「2.5」のデータがHITするのでしょうか? この場合、「0未満」など文字のあるデータは検索対象から外れてもかまいません。 よろしくお願いします。

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

  • ベストアンサー
  • oops1967
  • ベストアンサー率62% (5/8)
回答No.2

こんにちは、angelinaaneさん select * from テーブル where substring(項目 from '\,|[0-9.-]+') = 項目 and cast(substring(項目 from '\,|[0-9.-]+') as float8) <= 4 これでいかがでしょうか?

angelinaane
質問者

お礼

おおっ! スゴイです。 動いてくれています。 ありがとうございます。

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

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

小数点以下1桁までと分かっているときは、 select * from テーブル where to_number(フィールド名, '999.9')<=4; を試してみてください。

angelinaane
質問者

お礼

・・ダメでした。 うまく抽出してくれないです。

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

関連するQ&A

  • varcharの比較

    こんにちは。 DBのテーブル(test_tbl)が ID varchar update varchar となっているときにupdateがたとえば20040501よりもあとのものをJSPで表示させたいとします。その場合、数値型にしないと比較はできないのでしょうか? varcharどうしで比較する方法があると聞いたのですがどうやるのかわかりません。 (データ) ID   update 1 20040410 2 20040612 3 20040520 のときはIDが2と3のみ表示させたいのです。 よろしくお願いします。

  • varcharでの最大値抽出

    すいません。お教えください。 Mysql5.0.15で以下のテーブルを作成した時、数値の最大値(1010)を抽出したいのですがどのようにすれば抽出できるのでしょうか?お教えください。 テーブル名:B フィールド名,フィールドタイプ,備考 b_id,int(10),auto_increment b1,varchar(10) b_id,b1 1,999 2,1000 3,1000-1 4,1010 5,800 重ねて質問させてください。 select max(b1) from b;とした場合 999としか表示されません。 これもなぜなんでしょうか。

    • ベストアンサー
    • MySQL
  • Oracle8での数値チェック

    現在、Oracle8.1.7で開発しております。 検索する条件として、『数値かどうか』または『文字列かどうか』 という判断を行いたいのですが可能でしょうか? やりたい事は、以下のデータの右から2桁目が数値となっているものと 文字列になっているものとを区別したいのです。  ○○○○-A01  ○○○○-C99  ○○○○-AB1  ○○○○-Z21     : 設計上、すべてのフィールドは『VARCHAR2』となっています。 よろしくお願いしますm(_ _)m

  • エクセルで範囲のある数値に該当するデータを抽出

    エクセルにて  0以上 5未満 A  5以上10未満 B 10以上22未満 C・・・ というように、条件となる数値に範囲があるデータを抽出したいです。 IF関数の場合ネスト制限があるため全てのデータ抽出が行えません。 VLOOKUP関数で条件となる数値に範囲がある場合でもデータ抽出可能なんでしょうか? 適切な言葉が分からないので、上手く説明出来ているか分かりませんが、どなたかいい方法ありましたら、教えてください。

  • エクセルで数値の取り出し方

    こんにちは。教えて下さい。 データを入力するテーブル内に数値入力欄(O列)があります。 vlookupで各行を取り出すことがあるのですが、数値欄のみ、その取出行を含めて最上位にある行の数値を合計したものを取り出したいのです。 (vlookupでの抽出はA列に1から始まる自然数を使用しています。) 1~10行までのデータが入力があった時、5番目のデータを取り出した場合は5番目のデータの数値と1~4行目までの数値の合計の抽出です。 よろしくお願い致します。

  • エクセル フィルタ 数値のみ抽出したい

    フィールド1 1 2 3 あ い う のようなデータがあり 文字のみを抽出する場合は「*」でできますが、 数値のみを抽出したい場合はどうすればいいですか? 「1」「2」「3」を抜き出したいです。 アドバイスよろしくお願いします。

  • 「VARCHAR(255)」を「text」に。種別変更

    MySQL 4.0.27を利用しております。 操作はphpMyAdminで行っております。 1つの項目がかなりの文字数になりつつあり、 VARCHAR(255)では、入りきらないデータがでてきました。 そこで「VARCHAR(255)」を「text」に変更しようと 思います。 この時、データが入ったまま種別変更を行っても データが消えたりすることはないでしょうか? もしよければ「text」にした場合のデメリットも お教えください。よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 指定した数値より小さい数値がある行を抽出したい

    バッチファイルで、指定した数値より小さい数値を含む行を抽出したいのですが、そのような事は可能でしょうか。 環境はWindowsXPです。 例えば、「a.txt」というテキストファイルがあって、以下の様な内容の場合に、「40」以下の数値を含む行を抽出するという事は可能でしょうか。 ――――――――――――――――― 【a.txtの内容】 ――――――――――――――――― 30 50 70 ――――――――――――――――― 使用するコマンドは、WidnowsXP上で動作するものであればなんでも構いません。 何か良い方法をご存知の方がおられましたら、お教え頂けないでしょうか。 何卒、宜しくお願い致します。

  • idとするものをvarcharかintかで速度は?

    単純な質問ですみません。 idを例えばアルファベット5~10文字程度にしたVARCHAR(10)とする場合と、tinyintにする場合では検索スピードはどちらが速いのでしょうか? idの種類は多くても10種類くらいです。 レコード数は50万件くらいあります。 アルファベットのidを数値にするとは、例えば apple → 0 orange → 1 banana → 2 というような感じです。 また、idをもしtinyintにした場合、phpMyAdminなどでレコード表を確認した場合、何のidかわかりにくいですが、これは仕方ないのでしょうか?

    • ベストアンサー
    • MySQL
  • 2つのセルに入力された異なる数値同士を比較して、もっとも近い値のある行

    2つのセルに入力された異なる数値同士を比較して、もっとも近い値のある行を検索する。 EXCELに関して表題の件で皆様の助言を何卒よろしくお願いします。 以下のようなサンプルがあるとします。 【A表】 #     x      y 1     13     712 2     22     1277 3     22     1559 4     22     2158 5     30     692 6     33     2294 7     34     1205 8     36     177 9     40     1851 10     52     762 ・ ・ ・ ・ これに対しての検索するデータが以下です。 【B表】 2#     2X      2Y 2     17.38    421.735 3     29.504   419.711 4     12.254   419.922 5     32.509   417.048 6     32.412   415.276 7     32.131   413.79 8     28.439   416.012 9     28.105   172.226 10    38.55    262.927 13    58.727   10.303 14    50.327   11.811 15    35.978   104.821 ・ ・ ・ ・ A表とB表のそれぞれ 【x ⇔ 2x】 【y ⇔ 2y】 の部分と比較し もっとも近い値から上位3つくらいまで一致したA表の行を抽出するための 関数、マクロを作成したいと思っていまして、過去ログ等調べて 色々試してみましたがなかなかうまくいきません。 【x 、 y】と【2x 、 2y】はそれぞれ同じ行同士の物で検索しなければならないというのが ネックになっているのでしょうか? あとA表、B表の総項目数は一致していません。 もっとも近い値を検索し、その行の【#】の数値を抽出するという関数は 過去ログから検索して作成することは出来たのですが、 2番目、3番目に近い値を検索し、#の数値を抽出することが出来ません。 言葉足らずで理解に苦しむかと思われますが、何卒皆様のご助力を よろしくお願い致します。 ※本文では分かり辛いので画像添付しました。ご参照下さい。

自作パソコンについて
このQ&Aのポイント
  • 自作パソコンの部品はここの会社でも販売していますか?
  • ネットや実店舗で単品で自作パソコンの部品を購入できますか?
  • NEC 121wareのパソコン本体についての質問です。
回答を見る