方法: 1. "trim(translate(column,'0123456789',' ')) is NULL;" を使用して、データが数値かどうかを判断します。 2. "regexp_like(column,'^[ 0-9 ] [0-9]$');" データが数値かどうかを判断します。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
select*from table name wherere 通常の開発では、特定の列が完全に数値型であるかどうかを判断するという問題に遭遇することがあります。 Oracle がそのような既製の関数を提供していないことは誰もが知っているので、私の経験に基づいて 2 つの効果的な方法をまとめました (列名: columns、テーブル名: table):
1. トリム翻訳関数を使用します:
コードは次のとおりです:
select * from table where trim(translate(column,'0123456789',' ')) is NULL;
ここで注意すべき点は、翻訳関数の 3 番目のパラメータであることです。は '' ではなくスペースです。translate の 3 番目のパラメーターが空の場合は常に '' を返し、純粋な数値をフィルターするという目的を達成できません。
このようにして、すべての数字がスペースに変換されますが、すべて数字で構成されている場合は、トリミングすれば当然空になりますので、上記の目的は達成されます。もちろん、空の項目を除外したい場合は、次のように記述できます:
コードは次のとおりです:
select * from table where trim(translate(nvl(column,'x'),'0123456789',' ')) is NULL;--x 表示任何'0-9'以外的字符。
2. regexp_like 関数を使用します:
コードは次のとおりです。
select * from table where regexp_like(column,'^[0-9]+[0-9]$');
ここで、regexp_like 関数はすべての Oracle バージョンで使用できるわけではないことに注意してください。
regexp_like は、Oracle が正規表現をサポートする 4 つの関数 (regexp_like、regexp_replace、regexp_instr、regexp_substr) の 1 つです。この点の詳細については、関連ドキュメントを参照してください。
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
以上がOracle はデータが数値型かどうかをどのように判断しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。