“像一个%”。如何在app引擎上写这个?

时间:2013-03-27 04:45:34

标签: java google-app-engine

我正在使用带有app引擎的java。 SQL查询:

  

从名为LIKE“a%”

的人中选择*

如何在Google App Engine上编写?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Appengine的数据存储区中不支持LIKE运算符。

两种解决方案:

  • 如果您想保留类似SQL的查询,请使用Google Cloud SQL
  • Full Text Search与数据存储区中的实体一起使用

答案 2 :(得分:1)

要执行此类查询,您必须使用Google Cloud SQL

如果您使用的是数据存储区,则不支持全文搜索。您必须手动创建名称的所有可能变体,并使用它们来查询实体。您可以将它们存储在特殊实体的多值字段中(可能很昂贵)或使用完全符合此目的的特殊Search API(搜索不支持子字符串匹配,因此您必须使用相同的变体)。

使用Search API的两个词是:

  1. 列表项在数据存储区中创建具有一些name的人员实体

  2. 在搜索名为Persons的索引中创建相应的文档,其中包含字段possible_namesentity_id(您也可以使用Document.doc_id存储实体的ID)。在possible_names中,您可以存储名称除以空格的所有有用变体。

  3. 查询Persons索引以查找字段possible_names与搜索字符串匹配的所有文档。

  4. 使用字段entity_id表单结果的文档按ID从数据存储中检索实体。

  5. Here就是一个很好的例子。

答案 3 :(得分:0)

你正在寻找这个"select * from Person where name LIKE \"a%\""

吗?