2

私はアプリエンジンでJavaを使用しています。SQLクエリ:

名前が「a%」のような人から*を選択します

Google App Engineでそれを書く方法は?

4

4 に答える 4

2

App Engineデータストア内のエンティティに対してクエリを実行しているとすると、Javaでは次LIKE "a%"のように書き換えます。

Query query = new Query("Person")
  .addFilter("name", QueryFilterOperater.GREATER_THAN_OR_EQUAL, "a")
  .addFilter("name", QueryFilterOperator.LESS_THAN, "b");

残りは演習として残されます。https://developers.google.com/appengine/docs/java/datastore/queriesをご覧ください

于 2013-03-27T06:09:00.807 に答える
1

AppengineのデータストアではLIKE演算子はサポートされていません。

2つの解決策:

  • SQLのようなクエリを保持する場合は、GoogleCloudSQLを使用します
  • データストア内のエンティティで全文検索を使用する
于 2013-03-27T06:12:01.603 に答える
1

このようなクエリを実行するには、GoogleCloudSQLを使用する必要があります

データストアを使用している場合、全文検索はサポートされていません。名前の可能なすべてのバリエーションを手動で作成し、それらを使用してエンティティを照会する必要があります。それらを特別なエンティティの複数値フィールドに保存するか(高価になる可能性があります)、この目的に完全に適合する特別な検索APIを使用できます(検索は部分文字列の一致をサポートしていないため、バリエーションをすべて同じように使用する必要があります)。

SearchAPIで機能する2つの単語は次のとおりです。

  1. リストアイテムデータストアに個人エンティティを作成しますname

  2. 、という名前の検索インデックスPersonsに、フィールドpossible_namesとを使用して対応するドキュメントを作成しますentity_id(Document.doc_idを使用してエンティティのIDを保存することもできます)。possible_namesスペースで割った名前のすべての便利なバリエーションを保存します。

  3. Personsインデックスをクエリして、フィールドがpossible_names検索文字列と一致するすべてのドキュメントを検索します。

  4. フィールドentity_idフォームの結果のドキュメントを使用して、IDでデータストアからエンティティを取得します。

ここに小さな例があります。

于 2013-03-27T06:29:45.490 に答える
0

これをお探しですか "select * from Person where name LIKE \"a%\""

于 2013-03-27T04:47:24.877 に答える