0

私はMySQLデータベースに保存されたいくつかの点を持っています.それらはxとyの値を持つPOINT型として保存されています. WHERE 句で x 値と y 値を使用して特定のポイントを検索して返そうとしています。

動作させようとしているクエリの例を次に示します。

"SELECT id, x(coords) AS lng, y(coords) AS lat
 FROM my_points
 WHERE x(coords) = $lng AND y(coords) = $lat"

しかし、これは機能しません。私は MySQL の空間型の経験がありません。

いくつかの詳細情報を提供する以下のコメント:

私は実際にDBクエリにPHPフレームワークORMを使用していることに言及する必要がありました.上で書いたSQLは、ORMの構文を使用して達成しようとしていたことを表していると思われます. 以前に「WHERE」句で他の関数を使用したことがあるので、問題はORMにあるとは思いません。「WHERE」句で「 x() = lng AND y() = lat 」を使用するのが正しいかどうかはよくわかりません。通常の正しい SQL 構文では、WHERE 句で x() AND y() を使用すると、探しているものが得られますか?

4

1 に答える 1

0

列名に実際に括弧が含まれている場合は、バックティックする必要があります。

SELECT `id`, `x(coords)` AS `lng`, `y(coords)` AS `lat`
FROM `my_points`
WHERE `x(coords)` = $lng AND `y(coords)` = $lat

引用符で囲まれていないすべての列名とテーブル名は、サーバーのデフォルト文字セットの任意の英数字と文字「_」および「$」で構成できます。名前は、数字を含め、名前に使用できる任意の文字で始めることができます。

列名とテーブル名は、バックティック、ASCII 0、および ASCII 255以外の任意の文字を使用できます。これは、名前に特殊文字が含まれている場合や予約語である場合に役立ちます。

データベース名とテーブル名には 2 つの追加の制限があります。まず、「.」は使用できません。これは、database_name.table_name および database_name.table_name.col_name 表記の区切り文字であるためです。第 2 に、UNIX または Windows のパス名の区切り文字 (「/」または「\」) は使用できません。

于 2015-07-02T12:36:46.193 に答える