我正在使用带有app引擎的java。 SQL查询:
从名为LIKE“a%”
的人中选择*
如何在Google App Engine上编写?
答案 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运算符。
两种解决方案:
答案 2 :(得分:1)
要执行此类查询,您必须使用Google Cloud SQL。
如果您使用的是数据存储区,则不支持全文搜索。您必须手动创建名称的所有可能变体,并使用它们来查询实体。您可以将它们存储在特殊实体的多值字段中(可能很昂贵)或使用完全符合此目的的特殊Search API(搜索不支持子字符串匹配,因此您必须使用相同的变体)。
使用Search API的两个词是:
列表项在数据存储区中创建具有一些name
的人员实体
在搜索名为Persons
的索引中创建相应的文档,其中包含字段possible_names
和entity_id
(您也可以使用Document.doc_id存储实体的ID)。在possible_names
中,您可以存储名称除以空格的所有有用变体。
查询Persons
索引以查找字段possible_names
与搜索字符串匹配的所有文档。
使用字段entity_id
表单结果的文档按ID从数据存储中检索实体。
Here就是一个很好的例子。
答案 3 :(得分:0)
"select * from Person where name LIKE \"a%\""
吗?