• ベストアンサー

db2でisnumericは使えないのでしょうか。

やりたいことは、db2であるカラムの中の最大値を取得したいのですが、 そのカラムのデータの中には整数以外も含まれています。 整数のデータ中での最大値を取得したいのですが、良い方法はありませんでしょうか? where isnumeric(カラム名)=1 という感じで整数の中からの最大値のようなことはできませんか?

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

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

ANo.1の方がショックを受けておられたようですが、 DB2にisnumeric等の文字かどうかや数値かどうか等を判定する関数は、なかったと思います。 以下はAS400のDB2のマニュアルですが。。。(すぐに見つかったのがこれだったので。) http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/db2/rbafzmst02.htm#ToC ということで、 ANo.1の方が書かれているURLの方法を応用するとか、 select max(項目名1) from テーブル名1 where length(trim(translate(項目名1,' ','0123456789'))) = 0 とするとかしないとダメと思います。 注:このwhere句の意味。 (1) translate(項目名1,' ','0123456789') 0から9までの数字を空白にする。 (2) trim( ・・・ ) 前後の空白を除去する (3) length( ・・・ ) 長さを調べる。 0から9までの数字は空白に置き換えられた後、他の文字がなければ、trim()で消去され、 長さ0になっています。 ただし、空白が途中に入っていても数値とみなしてしまうので、'12 3'等があれば使えません。 未検証です。 マニュアルの文法では、 translate(項目名1,変換先文字列,変換元文字列) と書いてあったので多分大丈夫と思いますが。 (Oracleなんかと逆なのでちょっと気がかり。ご自身の持つマニュアルで確認するなり、  動かしてみて確かめるなりしてください。)

その他の回答 (1)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

http://www.dbforums.com/db2/1202593-check-numeric-db2-sql.html ガ、ガーーーン データ量やその他もろもろの問題がないなら、 アクセスかなんかにリンクテーブル作って処理したほうが簡単。

関連するQ&A