0

午後の皆さん、

計算を INTEGER に変換する際に問題が発生しています。基本的に私は計算しています。

CAST(ROUND(SQRT(SQUARE(69.1*(CAST(tblPostCode.PCLat AS DECIMAL(30,15)) - "& 53.078282 &")) + SQUARE(69.1 * (CAST(tblPostCode.PCLng AS DECIMAL(30,15)) - "& -2.271495 &") * COS(CAST(tblPostCode.PCLat AS DECIMAL(30,15))/57.3))),0) AS INTEGER)

(郵便番号から経度と緯度の距離を計算しました)

これで、この値を SELECT ステートメントで使用できるようになりましISNUMERIC()た。出力は true を返します。

ただし、WHEREステートメントでこの値を制限しようとすると、 「 NVARCHAR TO INTEGERへの変換中にエラーWHERE .... <= 150が発生しました」というメッセージが返されます。

誰でも助けることができますか?CONVERT と CAST を試しましたが、制限を追加するとWHERE ISNUMERIC(...) = 1出力値が得られません!

すべての助けに感謝します

敬具 ピート W

4

1 に答える 1

0

クエリをテストするために、テーブル参照 (tblPostCode.PCLng、tblPostCode.PCLat) を定数値 (5 と 6) に置き換えました。マーティン・スミスがコメントですでに述べたように、引用符で囲まれた表現は完全に無効です。これはおそらく以前のクエリの遺物ですか?SQL が行うことは、式を整数に変換しようとすることですが、引用符内の「&」が原因で失敗します。マークを削除して一定の値を保持すると、うまくいきました:

SELECT  CAST(ROUND(SQRT(SQUARE(69.1
                               * ( CAST(5 AS DECIMAL(30, 15))
                                   - 53.078282 )) + SQUARE(69.1
                                                              * ( CAST(6 AS DECIMAL(30,
                                                              15))
                                                              - 2.271495 )
                                                              * COS(CAST(5 AS DECIMAL(30,
                                                              15)) / 57.3))),
                   0) AS INTEGER)

結果は次のとおりです。

3332
于 2010-09-29T11:59:31.407 に答える