Oracle to_char回転数小結


Oracleでよく使用される関数は110個程度なので、日常開発で問題が発生した場合は、SQLで解決できるかどうかを考えることができます.この110個の関数はすべてOracleの原生であり、その正確率と効率は一般的に私たち自身が書いたものより強いはずです.しかし、むやみに使わないでください(whereの条件に入れるのは普通は間違っています).そして、Oracleは会社が百八十万を使って買ってきたので、このお金に申し訳ありません.
簡単な例を挙げます.現在は何曜日ですか.
Javaコード:
        Calendarc = Calendar.getInstance();
        c.setTime(new Date());
        System.out.println(c.get(Calendar.DAY_OF_WEEK));

上のコードに少し問題があることに気づきます
1:アラビア数字を出力して、対応する“曜日-”のフォーマットではありませんて、だからあなたは対照表を書きます
2:もしあなたが苦しいプログラマーであれば、javaの「日曜日」が1週間の始まりであることを忘れてしまいます.あなたの表示に問題がある可能性があります.
SQLの場合は、次のようになります.
 selectto_char(sysdate,'day') from dual;しかも本物の中国語は「月曜日」のフォーマットに似ています.
 
本題に入ります.私がこれを言ったのは、プロジェクトグループで問題が発生し、通常0.1のようなデータが検出され、前の0が失われるからです.それから以前私は1つの比較の2の提案をして、Signと1を通じて比較して、更にdecode
  decode(sign(t.compliance_rate - 1),
                     -1,
                     '0' || t.compliance_rate || '%',
                     0,
                     t.compliance_rate || '%',
                     NULL,
                     NULL,
                     1,
                     t.compliance_rate || '%') compliance_rate,   

この本格的な適用シーンは比較時間、数値の大きさなどです
今日も似たような問題があったので、解決することにしました.そして本気でひっくり返しましたcharの使い方(APIは抽象的で、ネット上の例によっては問題があり、解釈にも誤りや不備がある.具体的な方法と結びつけて、以下にまとめる.
例:
select to_char(0.596,'FM999,999,999,990.00') from dual
実行結果は次のとおりです.
 
0.60のような小数帯0をどのように調べるかは、上記のフォーマットを使用しています.
1:9は、数値が存在する場合は数値、存在しない場合はスペースを表します.
2:0は、数値が存在する場合は数値、存在しない場合は0、すなわちプレースホルダを表します.
3:そのFM代表:削除9によるスペースであれば削除
具体的な違いは
Selec length(to_char(1.00,'999,999,999,999,999,999,999,990.00')), length(to_char(1.00,'FM999,999,999,999,999,999,999,990.00')) from dual
結果は次のとおりです.
4:四捨五入:0.596が0.60になっていて皆さん気づいたかどうか分かりません.四捨五入しない場合はtruncの下で、具体的には以下の通りです.
select to_char(trunc(0.596,2),'FM999,999,999,999,990.00') from dual
結果は0.59
5:解決リスト10000000の場合
select to_char(10000000000,'FM999,999,999,990.00') from dual
 
上記の機能は固定小数点フォーマットに適用されます.小数点がなければ?
6:整数の後に複数の点がある場合を解決する
select to_char(10000000000,'FM999,999,999,990.99') from dual
同様の状況が発生します:10000000.
このような解決策としては,語データが含むか否かを先に判断する必要がある.(点の場合)
少しあればinstr()の下
そうでなければ直接to_cahr()
この機能は、ページに0が表示されない(クラスのカスタム属性、Aクラスにbが存在しない、sqlMapクエリで付与された場合に適している、通常は使用する必要はない)、フロントバックグラウンドリストに0が表示されない、フロントバックグラウンドリストの10000000フォーマットが表示されます.