2011-10-20 10 views
1

誰かが助けることができます。先頭の0を取り除くコンカットを止める

||'m'をクエリに追加しようとしていますが、コンカットを追加すると先行ゼロが削除されます。

.0m 

編集:私は例えば、この結果を得る連結で

0.00 

||'m'は、私はこの結果を得るからで

round(MAX(city_longitude),1) - round(MIN(city_longitude),1)||'m' 
:ここ はクエリです

乾杯

+1

...それがお役に立てば幸いです。 – pdwalker

+0

ありがとう、私はちょっと忘れました.. –

答えて

7

TO_CHARROUNDステートメント全体をラップして、フォーマットマスクを付けてみてください。

TO_CHAR(round(MAX(city_longitude),1) - round(MIN(city_longitude),1), '0.00')||'m' 

あなたが現在暗黙の型変換を強制的に文字列と数値を連結しているのに対し、あなたが効果的に文字列に文字列を連結するこの方法です。

暗黙の変換は、予期しない結果につながる可能性があるため、通常は戸惑うことがあります。

Oracleは言う:あなたが明示的に使用するときに理解しやすいですSQL文•

Oracleはあなたが は、これらの理由から、暗黙的または自動変換に頼るのではなく、明示的な変換を指定することを推奨しています データ型変換関数。

•特に暗黙のデータ型変換は、 のパフォーマンスに悪影響を与える可能性があります。特に、列の値のデータ型が逆の値ではなく定数の値に変換されている場合は、

暗黙の変換は、発生するコンテキストによって異なり、いずれの場合も が同じ方法で動作しないことがあります。たとえば、暗黙的な 日時値からVARCHAR2値への変換は、NLS_DATE_FORMAT パラメータの値に応じて、予期しない年の を返します。

•暗黙の変換のアルゴリズムは、 ソフトウェアリリース間およびOracle製品間で変更される可能性があります。明示的な の変換の動作は、より予測可能です。

番号形式はここにある: http://www.oradev.com/oracle_number_format.jsp

は、あなたが実際にあなたが実行しようとしているSQLを掲載場合、それが役立つだろう

+0

ありがとう、素晴らしい作品! –

+0

心配しないで、BTWは減算の前に両方の列値をROUNDする必要がありますか?そうでない場合は、結果をROUNDしてからTO_CHARなどを適用する方が効率的です – Ollie

+0

どうすればいいですか? :) –

関連する問題