2012-08-05 59 views
0

我想通过数据存储中的某个字段的长度来过滤查询,但看起来我无法在WHERE子句中包含一个len函数。如何编写一个过滤字段长度的gql查询?

q = db.GqlQuery("SELECT CommentCode FROM Comments " + 
       "WHERE RefObjType = 'paper' AND RefObjID = :1 AND len(CommentCode) = :2" + 
       "ORDER BY CommentCode DESC ", RefObjID, 1) 

这导致:BadQueryError: Parse Error: Invalid WHERE Condition at symbol (

谁能给我的我怎么可能会得到这个工作的例子吗?

的RefObjID一部分工作,因为整个查询工作,如果我只是离开了LEN()过滤器。

谢谢。

+0

请参考http://stackoverflow.com/questions/4986688/gae-sql-gql-correct-format – gongzhitaao 2012-08-05 12:59:50

回答

0

一种可能的解决方案:
修改查询以检索DESC顺序的结果,然后通过查询检索之后访问所需的结果处理结果。

更改查询:

q = db.GqlQuery("SELECT CommentCode FROM Comments " + 
        "WHERE RefObjType = 'paper' AND RefObjID = :1" + 
        "ORDER BY CommentCode DESC ", RefObjID, 1) 

之后选择具有length(CommentCode)==2有一个循环和条件语句的行。

+0

谢谢。这指出了我寻找答案的方向。 – 2012-08-21 17:10:52

1

你不能(至少据我所知),因为数据存储是如何工作的。字符串的长度需要是Model的属性(静态或动态使用db.Expando),然后根据该值进行过滤。

相关问题