使用[復刻] TO_NUMBERでOracle()関数

1つのはじめに使用
TO_NUMBER関数()TO_CHAR()関数は反対を返すと、主に、数値形式に文字列を変換するために1つの一般的に使用されるタイプのOracle変換関数です。

TO_NUMBER関数の形式は次のとおりです。

TO_NUMBER(VARCHAR2またはchar、「書式モデル」)
1つの。
TO_NUMBER関数は、事前定義された形式の固定された数を有します。

フォーマット値意味
9は数表し
0強制表示
$ドル記号表示
Lは現地通貨記号が表示を強制的に
小数点を表示する
、シンボル数千の区切り表示
2でのいくつかの例
SQL>を選択TO_NUMBER(「RMB234234.4350」 、「L999999 0.0000 ')デュアルから、
TO_NUMBER(' RMB234234.4350 '' L999999.0000
')--------------
234,234.435
。1
2
。3
。4
SQL> SELECT TO_NUMBER(' $ 123,233,455,623.3400 '' 'デュアルから); 999,999,999,999.0000 $
TO_NUMBER(' $ 123,233,455,623.3400 '' $ 999,999,999,999.0000
「)--------------------
1.2323E + 11。
1
2
3。
4。
3使用トラップ。
時には、TO_NUMBERの使用は()関数と構文が正しいことがわかりますが、Oracleは「無効な番号」エラーを報告している、とあなたは再び本格的に再度チェックし、そのTO_NUMBER(驚いて悲鳴の後に正しい文を決定します)関数は、どのような使い方を知らないかもしれません。実際には、これはあなたが要求したデータではなく、SQLよりも、問題であると考えられます。TO_NUMBER()関数を使用して、彼らは番号フィールドには、このような番号20151008に変換された文字列「20151008」が、文字列「2015年10月8日」として、デジタルに変換されていることを確認する必要があります あなたのフィールドは、文字列「2015年10月8日」が含まれ、そしてあなたも直接操作するTO_NUMBER()関数を使用する場合、それは「無効な番号」の障害を報告します。

4トラップ脱出
トラップを脱出する方法を?

1フロントエンドの検証
入力フォーマットの値は、我々が必要とするものであることを保証するために、ユーザーの入力の際に必要なチェックを行うことが可能な限り。

2バックグラウンドチェック
フロントデスクに渡される間違った値に背景スクリーニングでコードをチェックするために必要かつ合理的プロンプト。

3 SQLチェック
データベースに自分の価値観たら、問題が複雑になります。別のケースでは、データは歴史的で、我々はそれを修正するだけでなく、必要な調査を行うことはできません。今回はSQLレベルで何かをする必要があります。あなたはTO_NUMBERを使用すると仮定します()関数は、「ステータス」と呼ばれるVARCHAR2型のフィールドがあります。たとえば、不正なデータが比較的長い場合、あなたは長さがSQLチェックを追加することができ、それはもう一つの条件であります:

LENGTH(ステータス)<= 10
。1
または交換することができる,,不正な文字は、有料より条件でもあります。

TO_NUMBER(REGEXP_REPLACE(ステータス、 '[^ 0-9]'、 ''))> 30
。1
例REGEXP_REPLACE()文字"状態"フィールドを置き換えるためには、すべての非数値文字が空で、そして再びTO_NUMBER()比較は友達になることができます!
---------------------
著者:私は乾いた魚のフック午前
出典:CSDN
オリジナルます。https://blog.csdn.net/dongdong9223/article/details/48972815
免責事項:この記事はブロガーのオリジナルの記事、再現され、ボーエンのリンクを添付してください!

おすすめ

転載: www.cnblogs.com/AaronBear/p/11139376.html