0

Oracle データベースにクエリを実行するときに奇妙な問題が発生します。まったく同じロジックで異なる結果が得られますが、私が知る限り、実際には同じバージョンと構成である 2 つの異なる Windows Apache セットアップで得られます。

問題は、テーブルから 3 つの列 ( Number(10),Number(10),Number(10,4) ) を選択すると、同じクエリが 1 つのマシンで列 #3 に対して適切な 10 進数を返し、別のマシンでは削除されることです。小数と私は数値の整数部分のみを取得します。

Oracle が Number(10,4) データ型を返す方法を制御する設定がわかりません。2 つのマシンで Oracle クライアント、Apache、および PHP の設定に違いは見られません。

これの原因は何ですか?

よろしくお願いします。

イリヤ

4

1 に答える 1

3

考えてみると、php oci oracle query のように見えるマシンで、小数点以下を「省略」し、実際には小数点をピリオドではなくコンマで区切っていることに気付きました。数値を表示するための NLS 設定に関係していました。

NLS 設定には、 DATABASEINSTANCE、およびSESSIONの 3 つのレベルがあります。SESSIONの優先度が最も高かった。したがって、数値を従来の形式で表示するために、1,234.56 のように 1,234.56 として表示するには、次のコマンドを使用して *NLS_NUMERIC_CHARACTERS* を '.' に設定する必要があります。

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,'

クエリの前にコマンドを実行するので、すべての数値が適切になりました。

于 2011-08-29T15:46:52.130 に答える