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

やりたいことは、db2であるカラムの中の最大値を取得したいのですが、
そのカラムのデータの中には整数以外も含まれています。

整数のデータ中での最大値を取得したいのですが、良い方法はありませんでしょうか?

where isnumeric(カラム名)=1 という感じで整数の中からの最大値のようなことはできませんか?

A 回答 (2件)

ANo.1の方がショックを受けておられたようですが、


DB2にisnumeric等の文字かどうかや数値かどうか等を判定する関数は、なかったと思います。

以下はAS400のDB2のマニュアルですが。。。(すぐに見つかったのがこれだったので。)
http://publib.boulder.ibm.com/html/as400/v4r5/ic …


ということで、
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なんかと逆なのでちょっと気がかり。ご自身の持つマニュアルで確認するなり、
 動かしてみて確かめるなりしてください。)
    • good
    • 0

http://www.dbforums.com/db2/1202593-check-numeri …
ガ、ガーーーン

データ量やその他もろもろの問題がないなら、
アクセスかなんかにリンクテーブル作って処理したほうが簡単。
    • good
    • 0

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

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