2

地理空間計算を行うための新しいSqlServer2008管理対象空間タイプとメソッド(地理)を使用して、レコードの半径検索を実行する方法を学習しようとしています。私はこのウェブページのサンプルをフォローしています:

http://msdn.microsoft.com/en-us/magazine/dd434647.aspx

私は特にこのサンプルを実行しようとしています:

-- or declare POINT for "downtown Seattle"
-- 1609.344 meters per mile
DECLARE @Seattle geography = 'POLYGON(....)'; SELECT c.customerid FROM
 customer c WHERE c.geog.STIntersects(@Seattle.STBuffer(10 * 1609.344));

ただし、クエリを実行する前(またはquerを実行した場合-コンパイルエラーとランタイムエラーの両方)でも、次のエラーメッセージが表示されます。

An expression of non-boolean type specified in a context where a condition is expected, near ')'

私はこれに本当に困惑しています。私はまったく同じクエリを実行していません(地理列で自分のデータを使用しています)が、サンプルとほぼ同じです。SQL SErver 2008 SP2 StandardEdition64ビットを実行しています。クエリを入力すると、STIntersectionメソッドにインテリセンスが使用され、(other_geography geography)サンプルが表示されるため、メソッドが存在することがわかります。括弧を適切に閉じ、式をセミコロンで区切りますが、エラーが発生する理由がわかりません。グーグルは機能していません。

何かご意見は?

セス

4

1 に答える 1

6

STIntersectsは0または1を返します。これを試してください。

WHERE c.geog.STIntersects(@Seattle.STBuffer(10 * 1609.344)) = 1
于 2011-03-23T22:38:19.360 に答える